Visual block mode (Ctrl-V)

I suspect this will need some work/review before being accepted, but I thought I'd submit the pull request to get some feedback, maybe solicit some advice on the test cases.

Anyway, I wanted to try my hand at implementing at least some of this elusive feature. I think most of the main commands I use in this mode work:

* **r** to replace contents of block with a single letter
* **s** / **c** to substitute each line of the block with the result of an insert mode
* **I** / **A** to insert at beginning and append at end of a block, respectively
* **x** / **X** / **d** to delete the contents of the block
* **~** to toggle the case of all characters in the block

Some things I haven't attempted:
* **y**ank / **p**aste
* Test cases, as mentioned above (there's a start, but it doesn't pass, so I didn't add it to `AllTests`)
* Getting the cursor to move more like it does in Vim (IE: going "down" through a line that's shorter than the previous rows should NOT take the cursor to the end of the line, but should return to the original column when possible)
* Converting between visual block, visual line, and regular visual

This is requested in ticket #97