Limited mark-mode support.

Here's a first pass at mark-mode support.  From the code it's clear you were already thinking about this, so you may have something better already.  I will not be offended if you go with what you've got already or need to rewrite most of this.

The key this is to:
- use codemirror's extending mode
- update the point/selection after changing the mode.
- use extendSelection for all cursor navigation so that codemirror has a chance to do the right/smart thing as the cursor moves around.

I make the ctrl-g binding and the kill logic call clearMark.  This results in things meeting a minimal level of sanity, but I'm sure there's a lot more to do.  I figured I'd send in this pull request before I go down a crazy road and end up with a massive patch that combines way too many things.  (Right now I would like some Alt-D support and to improve the forward/backward word navigation.)