Allow required arguments for subcommands

Simple enforcement that additional arguments are passed to a subcommand.  If they are not then the subcommand's usage is displayed.

```
command.On("subcommand", "prints the version", &SubCommand{}, []string{"<requiredArg1>", "<requiredArg2"})

$ program -mainflags subcommand -subflags requiredArg1 requiredArg2
```
```
command.On("version", "prints the version", &VersionCommand{}, []string{"<detail-level>"})

$ program version full
```

* BC break in On() function.
* Arguments are fetched in cmd.Run() the same way as today (and there is no reference to the text passed to On() - that is currently used in usage output)
* Addition of more whitespace is usage output