Port python bindings to Python 3

Here I'm going to address remaining issues by merging changes from my diverged fork that made Protobuf 2.5.1 compatible with Python 3 by retaining compatibility with all other supported versions.

I kindly ask authorized developers to review and leave comments and I'll try to address them as soon as I can.

A few questions:
- Did you loose the requirements for minimum Python 2 version?
- Most tests are missing here: https://github.com/GreatFruitOmsk/protobuf/blob/master/python/setup.py#L100-L102. Why?


Is this change related to the Python3 port, or is it just ensuring better coverage of what the testcase name says it is about?