Setup basic commander shell.

Implement the basic CLI interface for the `radius` tool.

This configures it as a class which defines it's available actions and
properties. However, these are all set on the class object instance.
This currently prevents any sort of useful instantiation. I am torn on
this approach, between due to how the commander DSL read vs works.

They use a singleton for their `Runner` which gets setup by these
methods. This makes it very difficult to create more than one CLI, it
also makes it difficult to create an implementation that uses instances
over this weird class singleton structure.

Hopefully we can re-evaluate this in the future.

This has full stack feature specs with it. It includes some helpers to
make working with subcommands easier.