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.