core: allow command plugins to have options
core: CLI understands new plugin definition format
test: get all the tests passing with new CLI changes
website/docs: document the plugin interface for non-primary commands
core: non-primary commands aren't shown in basic `vagrant -h`
core: default commands to primary
commands/list-commands: lists all commands primary and non-primary
website/docs: add more docs for non-primary subcommands
Merge pull request #2807 from mitchellh/f-non-primary-commands

Non-primary subcommands

This enables plugins to define commands that are "non-primary": they won't be listed in the `vagrant -h` output, and are therefore somewhat hidden. The utility in this is that uncommon commands or commands that aren't friendly to beginners can be hidden. The full list of commands can be seen by executing `vagrant list-commands`.

As of this PR, no command uses this functionality (except `list-commands`). In the future, I'm going to introduce some non-primary commands for specialized tasks such as forcing a re-rsync.