Keymap

This is a rough-around-the-edges take on implementing a general purpose key-sequence => command binding framework.  See also #30.

The `KeyMap` holds a `Trie` that maps `Key` nodes to editor `Command`s, with a bit of state to keep track of incoming key presses.

The editor can then feed keystrokes to the KeyMap, and receive either a matching `Command`, a `Continue` signaling a partial result that needs more keys to disambiguate, or a `None` indicating that no match was found and the key should be handled normally.

I don't really know what I'm doing here, so there's certainly a lot of room for cleanup and improvements.
We probably could handle everything through this or something similar, but I'm not sure the Trie structure makes the most sense if we're aiming for a more modal+single key style.