Extract motions out of normal mode.

The idea is to use reuse this for the regions of text operators will
work on.
Hide modes behind factory functions.

This will make it easier for modes to have extra state.
Add an operator-pending mode and implement 'd'.

'd' works with the motions so far which is cool. Some things are a bit
wonky -- need to be clear about line-wise etc. e.g. in vim, "dG" deletes
till the last line including the whole last line, not just the first
character, even though the "G" motion jumps to the start of the last
line. But it doesn't delete the whole start line -- just the bit after
the cursor. So it's not really as simple as just deleting between the
endpoints of the region which is what we have now.

Reimplemented 'x' as 'dl', and 'D' as 'd$'.

Haven't implemented "dd" yet -- probably need some way to refer to
one-past the last line (or just special case the last line...). For the
other lines "0dj" works.
Add 'c' operator (and 'C' shorthand).

Just 'd' but moving to insert mode after.