Add the ability to register aliases through super-commands.

Upcoming changes in Juju will move many commands from being top level commands to be commands within subcommands.  For example "juju add-machine" will become "juju machine add".  However we need to make sure the old 'add-machine' command works (for a while).

The branch adds the facility for top level aliases to be added for commands in nested supercommands.

Additionally there is an interface defined to deprecation and obselete checks.  If an alias is obsolete it is not registered.  If a command is deprecated, a deprecation warning is written out automatically when the command is executed.

The more interesting aspect of this is making sure that the help command works properly.
Yeah it is. Mostly because we need to know which name was used to get to the command, and the getting to it is done in the Init method, but we care in Run.  The easiest solution seemed to be to store it in the structure.