Improved Help Command. Better Error Messages for invalid Modules/Commands

Refactors the core CLI code in order to make help a first-class module and give more verbose error messages when the module or command is not found.
This change also clarifies the terminology. 'cci', 'hardware', 'metadata', etc. are modules. list, detail, cancel, etc. are commands. Before the terms were modules, commands, subcommands, actions...

Examples:
```
$ sl help
<help about all modules>
$ sl help cci
<help about all cci commands>
$ sl help cci list
<help about the cci list command>
$ sl invalid
<primary help block>

Invalid module: "invalid".
$ sl cci invalid
<cci module help block>

Invalid command: "invalid".
```