Commands Refactor Part 2

We split #196 in two parts. this is the second. (#262 is the first). This builds on all the changes to commands/.
AFAIK there's no way to order subcommands (because they are a map), so when they print out they will be unordered. As we discussed, it will be best to allow us to express in the `Help` precisely what we want the output to look like, and to give us a variable to auto-gen subcommands (and for that matter, args and options) text. I suggest:

```Go
    HelpGenOptions: cmds.HelpGenOptions{
      Subcommands: false,
      Options: true,
      Arguments: true,
    }
```
And default everything to true.