OnKey using channels and EditorMode as an interface

- need some way of dealing with streams of commands comming in that lets
  us assemble composite commands - seperating out the implementation of
  parsing what a event results in helps going that way
- Reset then needs to be used across multiple modes, but it means
  something different in each - so we introduce the EditorMode interface

- NOTE: broken atm