Python3 support

Here is an update of the python and swig code to support both python2 and python3.

The main changes are using of `__future__` print function and division.
For python3 support the main pain point was the different handling of division (`__div__` vs `__truediv__`, solved by copying the attributes) and the difference when handling string versus bytes (solved via a conditional definition for swig's `typemap(out) std::string`).

I also played a bit with the compilation scripts. But those changes are not as clean/nice as they should.
I guess the `python-simplify` branch will cover that.