Fixes #1243 - part II (select mode enhancements)

This pull request adds support for entering select mode (conditionally based on `keymodel`) from insert mode.  It also:

* fixes entering visual mode from select mode (via `Ctrl+G`)
* fixes returning correctly to the previous mode after swapping visual and select modes, _and_
* normalizes the caret position on entry to normal mode.

As it is, this pull request is complete and passes all tests.  However, I have further changes, such as adding many tests, but I would like some feedback on adding keys to the insert mode.  It seems like insert mode should use a command runner in order to effectively utilize the `CommandFactory`.

Should I try to convert insert mode to use a command runner?  See 'mini-runner' in the comments.