Full support for 'backspace' option

This pull request adds full support for the `backspace` option including `indent`, `eol`, and `start`.  It also prevents `Ctrl+W` and `Ctrl+U` in insert-mode from interfering with the ability to redo the current insert.

The main features of the changes are:

- Add new `LastInsertEntryPoint` which tracks the start of the current edit
- Split processing of backspacing commands into those compatible with the current edit and those that create a new edit
- Translate context-dependent commands like `DeleteWordBeforeCursor` into their corresponding context-independent `DeleteLeft` command
- Many new tests for backspacing commands
- Adjust older tests for the correct implementation of `backspace=start`
- Change the way caret changes are detected to obey all caret changes that occur when insert-mode is active but not currently processing key input