Py3

Please pull into a py3 branch. I have done a straight port to python 3 with all unit tests working for py3. I tried to do a shared code with py2 and py3 but that proved somewhat messy. Doctests does not work well with that approach. I left my in between commits to show my futile attempts on a shared code base.