Made CommandException.newCommandException(final String prefix, final Throwable cause) private.
BugFix: ProgramFactory.newSemanticallyAnalysedProgram(Path[]) now really does semantical analysis.
FirmException, CommandException: improved exception messages.
Refractored CLI Main with command pattern.
Removed assert that expects an empty compiler output on the cli.