Check that trying to delete nonexistent attributes raises AttributeError
A tempfile is not a python 2 file; arrange for separate tests to exist for files and tempfiles
Test treating a file-like object as a file, on all pythons
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