Add Python 3 support.

Make the C module compatible with Python 3. Adjust tests to use bytes
for all tests, ensure that trying to use Unicode (the result of which
will depend on encoding) triggers an error. Include Python 3.2 and 3.3
for testing on Travis.
Improve exception messages.

Instead of relying on BadArgument(), set the TypeErrors directly and
add messages to make them more informative, especially important since
hashing unicode strings is now disabled because it can be inconsistent
depending on the encoding.