Add diff to error messages from treewalker tests.

I've spent too long straining to see subtle difference. This helps.
Re-enable Genshi treewalker.

The Genshi treewalker was never fully updated when support for
namespaces was added to treewalkers. This finally fixes this, allowing
all tests to once again pass.

This removes the ignoring of children of void elements as the commonly
used treewalkers don't support this and there was some subtle bug I
couldn't see in the code. Given most don't support this, this seems
like little loss. (You will, however, still get an error from the
treewalker if a void element has children.)
Add requirements files for our optional dependencies and test with them.
Fix DATrie support under Python 2.

This is a simple issue of using `str` to refer to what should be
`six.text_type`.
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.