[vim] Ctrl-[ leaves insert mode, same as <Esc>

As a die-hard vim addict, long ago, I retrained myself to type Ctrl-[ to
leave insert mode. This sends the same control sequence as escape in
many other places, actually, and this patch brings this functionality to
CodeMirror.

From vim's :help ctrl-[

                                        *i_CTRL-[* *i_<Esc>*
<Esc> or CTRL-[
    End insert or Replace mode, go back to Normal mode.
    Finish abbreviation.
    Note: If your <Esc> key is hard to hit on your keyboard, train
    yourself to use CTRL-[.

Typing CTRL-[ is particularly easy when caps-lock is remapped
to being another CTRL key, since now neither hand needs to move away
form the homerow, and both little fingers just slide a little, the left
little finger slides to the right to where caps lock used to be, and the
right little finger slides a little bit up to the '[' key
Replace tab in searchcursor.js with spaces.
[clike mode] Recognize multi-line preprocessor directives
Help IE cache layout information in measureLineInner

Issue #990
Prevent gutter flickering on horizontal scroll in IE

Apparently, IE does a redraw as soon as you assign to scrollTop/scrollLeft.

Closes #992
Make run-time changes to lineWrapping work properly again

Closes #1002
Make htmlmixed properly check for "tag" style

This allows the xml mode to return a style with space separated classes
and still work. I didn't use /\btag\b/ since that can match "tag-foo".
Move the previous mode property before adding mode extensions

This stores the previous value for a mode property if an extension
overwrites it with a new value. The old value is stored in a property
prefixed with an underscore (e.g. "_token"). This allows extensions to
piggyback the old value by still being able to access it.
[twilight theme] font-underline -> text-decoration
Fix browser detection for gecko
Handle horizontal scroll directly, if ratio known, on browsers where needed

Issue #986
Make sure OS X webkit momentum scrolling hack is always applied

Issue #986
[vim keymap] Make ctrl-c leave insert mode
Add mode for HTTP messages (i.e. requests and responses) that follow RFC 2616
Add 'negative' and 'positive' token styles
Integrate HTTP mode
[xml mode] Add a property identifying html vs xml configuration to mode object
Fix failing tests
Mark depencendy of PHP mode on HTMLMixed
[php mode] Add list of builtins