I think it would be a reasonable idea to move **all** key bindings into the `CommandFactory` and manage their construction and use efficiently from there.  It's very declarative.  Only `CommandRunner` needs to have any mutable state.

But my main question here remains:

* Should the key input processing in insert mode be converted to use a `CommandRunner` instead of manually dispatching commands based on its own raw single key input-based `Map`?

All the other modes besides insert have a command runner and using insert mode with the `CommandFactory` is awkward because we have to run the commands ourselves, which is exactly the purpose of `CommandRunner`.

I would be happy to _try_ to make that change and add it to this pull request if you think it is a good idea.  Otherwise if the "mini-runner" is fine for now, I just start writing tests.