Removed unecessary PrettyPrinterFactory.
Implemented PrintAstCommand.
LexerCommand: log message now logs on debug instead of trace.
Implemented SemanticAnalysisCommand.
Implemented ProgramFactory.
PrintAstCommand, SemanticAnalysisCommand: now use ProgramFactory.
corrected type failure: [SematicAnalysisCommand -> SemanticAnalysisCommand]
ProgramFactory can now create semantically analysed programs.
SemanticAnalysisCommand now uses ProgramFactory.
CommandException now converts specific exceptions to specific command exceptions.
Commands now don't map exceptions by themselves.
Added FirmException.
Implemented CompileFirmCommand.