Introduce command system.

Gemini now has a unified command system. Commands are defined once, and
can then be added to menus and toolbars. Command handlers are defined
separately from the commands themselves, to allow alternative command
handler selection; for example, the currently active document might get
a chance to handle the command first (not yet implemented). It will now
be possible to completely customise the built-in menu and toolbar items,
much more easily than previously.

This is a breaking change; code that explicitly adds menu or toolbar
items will need to be changed to use this new command system.
Implement 'list"-type commands.

"List"-type commands get dynamically replaced at runtime by a list of
commands. For example, this can be used for a "Recent documents" list in
the File menu.
Add module menu items back in, using new command system
Add demo menu items back in, using new command system
Implement keyboard shortcuts for new command system
Add Window menu, and document list menu items
Add Command.IsChecked, to show checked menu items
Port toolbars to new command framework
Merge pull request #79 from tgjones/commands

Introduce command system.