Change specification of commands

Instead of having to handle command execution manually, have it done
automatically.

The `commands' variable can be used to specify mappings between command
names and callables. The command should still be called by itself, but
checking which command should be called is now done by `BaseCommand'.

This changes, for example:

,----
| def ExampleCommand(pycommand.BaseCommand):
|     # ...
|     def run(self):
|         if not self.args:
|             print(self.usage)
|             return 2
|         elif self.args[0][0] == 'h':
|             cmd = HelpCommand(argv=self.args[1:])
|         elif self.args[0][0] == 'v':
|             cmd = VersionCommand(argv=self.args[1:])
|         else:
|             print('error: command {cmd} does not exist'
|                   .format(cmd=self.args[0]))
|             return 1
|
|         # ...
|
|         cmd.run()
`----

Into

,----
| def ExampleCommand(pycommand.BaseCommand):
|     commands = {'help': HelpCommand,
|                 'version': VersionCommand}
|     # ...
|     def run(self):
|         cmd = super(ExampleCommand, self).run()
|         # ...
|         cmd.run()
`----

The `run' method should still always be overridden, but it makes things
somewhat simpler.
Throw exception instead of calling sys.exit()
Update full-example
Update documentation