Python 3 compatibility: PyInt -> PyLong
Only check for PyInt on python 2
Python 3 compatibility: type and module changes
Python 3 compatibility: getattro/setattro
Temporarily forego file objects
Implement writing to files under python 3
Document how files are handled
Python 3 support: Unicode in strings
Python 3 support: Unicode in strings
More unicode
More unicode
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.
Handle bytes and unicode in read callback
Make exception message more descriptive
Encoding multibyte data is not going to work well, only allow ascii
Send bytes to write callback under python 3.

This is the only way to pass non-ascii response bodies to
write callbacks without mangling/destroying them, because
encoding is given in headers which are entirely separate
from the body.
Document unicode handling
Try explicitly decoding in utf8
Not sure why it worked on my machine but contents should probably be decoded
Decode more