Moved cli into new module.
Added pattern test.
Add a bunch of tests to the argument parser.
Added tests for CompileMode.
Refactored Main class.