Decorator to only run tests on python 3
Python 3 compatibility: PyInt -> PyLong
Python 3 compatibility: type and module changes
Python 3 compatibility: getattro/setattro
Temporarily forego file objects
Python 3 support: Unicode in strings
More unicode
More unicode
Tabs to spaces
Note to redo
Replace bogus Unicode to C string conversion logic.

The old code leaked malloc'd memory and did not handle
embedded NULL bytes, and used C library's locale rather than
Python locale.

The new code still leaks memory but correctly handles
embedded NULL bytes, already encoded data as instances of
bytes type, and uses utf8 encoding if encoding needs to
be performed.

The new code only works on Python 3 >= 3.3, 3.0-3.2 need
to have their own version added.
Only check for PyInt on python 2
Handle bytes and unicode in read callback
oopsie
Test for read callback returning bytes
Straight decref
Make exception message more descriptive
Make exception message more descriptive
Check that read callback returning bytes with embedded nulls works correctly
Dry