Python 3.x compatibility

This is quite a major change. It brings many compatibility changes for many parts of the library. Apparently many of them never really succeeded or even
attempted by tox...

* move to use the six library for many portability features
* move to unittest2 as the main implementation of the unit tests
* fix broken tests for encoded messages with unicode args and vice-versa. These were broken before, seemingly without relation to the current changes.
* Make the skip_if on tests actually work as expected, and result in actual test skips.
* Fixed Cython extension to be Python 3 compatible