Redirect logging to output dir.  Support out of order crosses in config
Add exit codes and logging of exceptions
Add #! to run script
Use state monad to allow crosses to be defined out of order