[vim keymap] Repeat insert changes for A,I,a,i,caw,ciw
[vim keymap] Fixups for repeat insert mode changes

Cleans a lot of insert mode record/replay code.
Adds support for o and O.
Adds unit tests and fixes a lot of corner cases.
Fixes cw deleting trailing whitespace.
[vim keymap] Add support for insert mode count repeat.
[vim keymap] Rewrite insert mode change recording
[sql mode] Various improvements

 * More comments

 * MySQL/MariaDB: add \N as synonym of NULL

 * separate support.charsetCast (_utf8'str') from support.nCharCast (N'str')

 * oracle supports: nCharCast, zerolessFloat

 * comment which explains Mime Types properties
Export changeEnd utility

See #1581
Fix bug in character measuring code for line containing only a multi-line widget
Restore accidentally commited changes
[sql mode] fix zeroless float syntax
Have the linter take an optional directory argument
Measure size of inline widget *content*, not widget wrapper node

The height of an 'inline' element is pretty much meaningless.
[sql mode] MySQL/MariaDB: add client commands \! \? \. \#
[sql mode] Add support.commentHash and support.commentSpaceRequired to support Oracle comments
[sql mode] New mime-type: x-cassandra

* add x-cassandra
* add support.doubleQuote
* add support.commentSlashSlash
[lint addon] Introduce CoffeeScript linter
[clike mode] Add shader language mode

New mime types x-shader/x-vertex (vertex shaders) and
x-shader/x-fragment.
[javascript mode] Add doubleIndentSwitch option

Default is still true.

Closes #1592
Fire events for DOM events that the editor handles

Deprecate onKeyEvent and onDragEvent
Ensure coordsChar sets 'after' properly for clicks before the start of line
Better solution to storing relative x position in coordsChar return value

It now has an xRel property that can be -1, 0, or 1, rather than a boolean after.

This way, we can distinguish between precise matches and coords after the
returned position.