Fix DATrie support under Python 2.

This is a simple issue of using `str` to refer to what should be
`six.text_type`.
fixup! Add diff to error messages from treewalker tests.
Fix chardet test under Python 3 to read file as bytes
Split requirements-optional so chardet works on Python 2 and 3.

As the comment says, I am well aware how evil this is hardcoding the
Debian URL, but this allows for testing of all supported optional
extras, and given chardet is packaged for Python 3 in varies places,
this seems worthwhile to support.
fixup! Split requirements-optional so chardet works on Python 2 and 3.