Python3 support

As per #62 We need to add support for Python3.

This adds support for Py3 and keeps existing py2.6-2.7 support. There is a library that depends on a stale pull request, and it is something I really hope they merge in. And thanks for Neil @drnlm in fixing the last few incompatibilities.
Why is this here?