Implement concept of editor modes

This introduces the concept of modes.

A mode is an interface through which the user can use Iota. The goal here is to eventually implement vi-like modes, but also support non-vi-like editing. This non-vi-like editing is the default behaviour in editors like emacs or sublime and many others. I have implement this non-vi-like editing as a mode of its own, called `StandardMode`. The next step will be to add the vi modes `NormalMode`, `InsertMode` and `VisualMode`.

This first step is really just to see how it will work, and it seems decent to me.