Fixes #1212 (add Ctrl+U in insert mode)

This pull request adds `Ctrl+U` in insert mode and fixes #1212 .  The behavior of `Ctrl+U` in insert mode is fairly complex and so there are quite a few new unit tests.  This is fully compatible with vim except for `backspace=indent` which will be fixed when that feature is added to `DeleteWordBeforeCursor`.

Two notable implementation decisions:
* Undo insert is implemented partly as a `CustomCommand` and partly as a normal `InsertCommand`.  The former is due to the requirement that undoing an insert while still on the same line has to stop at the insertion point, and is in fact itself not undoable (matching vim).
* In order to re-use `InsertCommand` dispatching, `CustomCommand` handlers now have a `KeyInput` parameter.