vim: refactor phrase and normal mode to share command API.

We now register commands during class init. Both phrase and normal mode
will push the verb onto the phrase line and then try to flush the phrase
based on registered commands.

TODO:

 -  We should probably register if a command is a movement.
    Then we can limit lookups by commands needing a movement modifier
    to fail unless they get a movement modifier.