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.
Refactor based on product owner's suggestions:

- Remove command class, which served only the purpose of interface
  declaration.
- Use rspec-spies to create better mocks
- Create a shared example group for commands.
- Use `let' to set up context instead of creating temporary variables
  inside example groups.
- Wrap the terminal stuff so it can be elegantly skipped during testing.
- Fix formatting mistake where an empty line was inserted in an rdoc
  comment.
- Use to_sym and not intern; this is not lisp.
Refactor specs.

- Don't nest `context` blocks.  Instead, combine `context` and `describe`
to increase readabiliy.
- Be consistent about use of capitalization in specs: only top level
forms are capitalized.
Merge pull request #12 from expez/keyboard

Add support for keyboard events