commands: Start adding commands util helper.

This class is intended to be used to contruct a tree of sub-commands. In this
intial version it mainly focuses on exposing `add_argument` to allow for nested
parsers. Next step is to start adding better `--help` that shows the entire tree
and hooking it up to select what code path to really run.
commands: Set child names upon adding them
commands: Add basic format usage helper
commands: Make sure parser errors get translated to correct error type.
commands: Add help_formatter() with tests.
commands: Add set_defaults() to the parser

- Removes mock based test that checks delegation, just check commands result
- Allow setting of defaults that propegate down the chain
- Move internal parser args to a _parse helper.
commands: Add usage to CommandError
commands: Add str method CommandError
commands: Add run method to Commands
commands: Remove trailing newline for command errors
commands: Internalise handling of help action

This means help will always be handled by the root command. Additionally this
adds an exit helper.
commands: Extend use of exit helper to parser errors

This moves all the bad arugment handling into our class and makes sure to mark
all the helpers as internal.
commands: Replace set_defaults with set method

For our use case we only need to be able to override a value, not set defaults
so this simplifies everything.
ext: Add get_command and mopidy.backends.base.Command
local: Convert local scanning to new commands.

Also moves mopidy.backends.local.scan to .command
main: Convert main program flow to command helpers

- Moves all startup code from start() into mopidy.commands
- Moves deps and config to mopidy.commands
- Plugs in use of commands parsing provided by new helpers
- Allows commands to override base verbosity level
- Removes defunct bootstrap logging helper.
ext/backend: Use utils.command directly.

Commands don't "belong" to backends or frontends so just leave it at an ext
level and start using mopidy.utils.command directly.