Commands and Sub-commands
=========================
The base `Command` interface is found in `cmd/cmd.go`.
Commands need to provide an `Info` method that returns an Info struct.
The info struct contains: name, args, purpose and a detailed description.
This information is used to provide the default help for the command.
In the same package, there is `CommandBase` whose purpose is to be composed
into new commands, and provides a default no-op SetFlags implementation, a
default Init method that checks for no extra args, and a default Help method.
Supercommands
=============
`Supercommand`s are commands that do many things, and have "sub-commands" that
provide this functionality. Git and Bazaar are common examples of
"supercommands". Subcommands must also provide the `Command` interface, and
are registered using the `Register` method. The name and aliases are
registered with the supercommand. If there is a duplicate name registered,
the whole thing panics.
Supercommands need to be created with the `NewSuperCommand` function in order
to provide a fully constructed object.
The 'help' subcommand
---------------------
All supercommand instances get a help command. This provides the basic help
functionality to get all the registered commands, with the addition of also
being able to provide non-command help topics which can be added.
Help topics have a `name` which is what is matched from the command line, a
`short` one line description that is shown when `