Add more complete support for kitty keyboard protocol
We support the basic [`CSI u` encoding](http://www.leonerd.org.uk/hacks/fixterms/), upon which the [kitty keyboard protocol](https://sw.kovidgoyal.net/kitty/keyboard-protocol/) is based, but there are a number of things we need to do before we can enable the full kitty protocol at startup.
The first thing to figure out is how to properly support binding e.g. <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>q</kbd> and <kbd>Ctrl</kbd>+<kbd>q</kbd> as separate key combos. Due to the way key bindings were handled historically, both in dte itself and in terminals in general, these 2 combos are currently ambiguous and effectively inseparable. This stemmed from the fact that older terminals never sent distinct escape sequences for e.g. <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>q</kbd> - they either reserved the <kbd>Ctrl</kbd>+<kbd>Shift</kbd> prefix for their own internal bindings or sent key sequences to the client as if <kbd>Shift</kbd> wasn't pressed.
TODO:
* [x] Update `parse_key_string()` to interpret _either_ `C-C` or `C-c` as <kbd>Ctrl</kbd>+<kbd>c</kbd> (for backwards compat.). `C-S-c` is <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>c</kbd> (previously unbindable).
* [x] Update `parse_key_string()` to translate e.g. `M-A` to `M-S-a` (for backwards compat.). These 2 now result in the same `KeyCode`, but the latter is considered the canonical form.
* [x] Update various quirks in `KeyCode` normalization, to reflect the above changes.
* [x] Start emitting `\e[>1u` at startup, for supported terminals.
* [x] Update built-in key bindings (in `config/binding/default`) with new canonical key strings.
* [x] Update example key strings in documentation to new canonical form.
* [x] Add support for "report alternate keys" mode (`0b100`) and start emitting `\e[>5u` at startup.
* [x] Prefer "base layout key", if present.
* [x] Allow binding <kbd>Ctrl</kbd>+<kbd>i</kbd> separately from <kbd>Tab</kbd>.
* [x] Allow binding <kbd>Ctrl</kbd>+<kbd>m</kbd> separately from <kbd>Enter</kbd>.
* [x] Allow binding <kbd>Ctrl</kbd>+<kbd>[</kbd> separately from <kbd>Esc</kbd>.
issue