Refactor command handlers.

This is in preparation for better command routing, where each ViewModel
in the path from currently-focused element up to the root will get a
chance to handle a command. It's easier to do that in a strongly-typed
way with this refactoring. Command handlers now implement either
ICommandHandler<TCommandDefinition> or
ICommandListHandler<TCommandDefinition>. To save typing if you don't
need an Update method in your command handler, there's a
CommandHandlerBase : ICommandHandler<TCommandDefinition>.