Tokenize MPD requests instead of regexp per command variant

Fixes #591 and #592. The tokenizer still need more correct error handling, and there is still quite a bit of work converting everything. `*args` support is needed as an escape hatch for more creative commands like `move [{FROM} | {START:END}] {TO}` and searches. `*args` may not be combined with regular args or keyword args due to precedence rules when binding `func(*args)`.

**TODO**

- [x] INT, UINT, RANGE, BOOL need docs
- [x] Document commands class
- [x] Document tokenizer
- [x] As always, changelog...
- [x] Update commands class to raise `mopidy.mpd.exceptions`
- [ ] Double check commands that might have absolute and relative ints
- [x] Add deprecation warnings to commands that should not be used.
- [x] Handle and test cases where conversion raises value errors