Implement CommandFactory.

We create new commands to execute using the factory pattern.
Implement the NoOp command.

The Commands are in the style of the Command pattern.  Each command has
an execute method and, if applicable, an unexecute method which is used
to reverse the effect of the command.

By using the command pattern in this manner we can keep track of the
last X commands and allow the user to undo his actions, increasing
usability.
Implement QuitCommand.
Add support for key events.
Add documentation to Terminal and fix indentation.