Clean up key bindings

Before implementing operator pending mode, I wanted to get the key bindings as minimal as possible. Let me know if I'm missing anything, but all the tests pass. You want to just view the file instead of looking at the diff, because I rearranged things quite a bit.

* `esc`, `ctrl-c`, etc all activate command mode whenever we're *not* in command mode.
* A bunch of bindings apply to anything that isn't insert mode (command, visual, and soon, operator pending).

This leaves very few visual- and command-mode specific bindings and a lot less duplication.