Refactored the way commands are parsed.

This has several advantages:
  - It fixes #22.
  - More generally, the shell is less sensitive to input variations; the
    old one would choke on leading/trailing whitespace, or extra
    whitespace. Now the parser just sees whitespace separated strings.
  - We no longer have to duplicate the names of command and their
    arguments; these are derived from the python function
    names/arguments. We can still override the name when we need to
    though.

We take advantage of the last point in a number of places, so the
command names have changed.

Still on the TODO list, the docstrings are no longer used, and contain
no useful information that isn't in the immediate vicinity. We could
should use this to provide a brief description of what the function does
- which we could even add to the help message.