Decorator for Ex commands

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Introduce key parsers and refactor normal mode input with them

We now have a quick DFA-like language for reflecting sequences of keys, which
cuts a lot of the conditional logic out of key handlers.

We've refactored normal mode in terms of these, which brings us most of the way
to refactoring everything (more to come).

In support of this change we've also taken the buf and sline arguments away
from the old key handler and are replacing them with methods on ui().

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Finish port to key parsers

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Simplify insertion

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Bury _mode and mode_changed deeper

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Rename ui_core to ui

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Make buf and sline properties in ui

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Remove buf and sline arguments from excommand handlers

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Remove spurious argument from mode.abort()

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Remove buf and sline arguments to key handlers

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Split excommands on first token-like boundary

We don't need a space between the command and the arguments anymore, so
commands like s/foo/bar/ can be separated effectively.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Tab completion for file names

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>