mpd: Add MPD tokenizer

- Adds tests for correctness of tokenizer (which also would have shown shlex
  wouldn't have worked).
- Should conform with the original's behavior, though we won't be able to match
  the error messages without a lot of extra work as a non-regexp version is
  likely a no go on python due to speed.
mpd: Write commands helper for tokenized command handling

This provides a class which works as a command registry. Functions are added to
the registry through a method on the class `add`.  Add acts as a decorator
taking in the name of the command and optionally type converters for arguments.

When handling requests, we can now tokenize the line, and then just pass the
arguments to our commands helper. It will lookup the correct handler and apply
any validation before calling the original function.

For the sake of testing the original function is not wrapped. This the
functions, and anything testing them directly can simply assume pre-converted
data as long as type annotations are in place.

A sample usage would be:

    @protocol.commands.add('addid', position=protocol.integer)
    def addid(context, uri, position=None)
        pass

    def handle_request(line):
        tokens = protocol.tokenizer(line)
        context = ...
        result = protocol.commands.call(tokens, context=context)
mpd: Return command name in find handler.
mpd: Split out tokenizer and add proper errors.
mpd: Move commands tests to mpd directory
mpd: Fix tokenizer error messages to match original protocol
mpd: Add last missing error cases for tokenizer.

If we decide that exact error message parity is not needed these can and should
be removed as they complicate the tokenizer.
mpd: Update tokenizer to use mopidy.mpd.exceptions
mpd: Install new commands helpers in _call_handler

This means we now tokenize every request, and then try in call the appropriate
handler. If none is found we simply fall back to the old handlers.
mpd: Store auth required and if command should be listed
mpd: Cleanup imports in reflection
mpd: Upate command reflection to handle new commands helper
mpd: Convert protocol.status to new helper
mpd: Convert protocol.playback
mpd: Add protocol.position_or_range converter
mpd: Convert almost all of protocol.current_playlist
mpd: Update type converters naming and add UINT

Also adds tests for RANGE helper.
mpd: Convert channels and stickers and delete empty.
mpd: Update auth filter and convert audio_output and connection
mpd: Stop string escaping all input as we have a proper tokenizer