let commands say they need the app param
Add app flag to commands that need it.

Instead of `hk -a myapp cmdname`, this reverts back to the
`hk cmdname -a myapp` syntax. However, parsing the `-a app` param is
still handled by the main executable rather than the subcommands. This
does not yet work for plugins.

Also ensure that the flag is provided when NeedsApp == true.
disallow global args
separate Name field from Usage on Command struct