Support Python 3

* I had to do some funny business in python3 to restore __new__, python complains about too many arguments in certain scenarios (see Objects/typeobject.c -- 3167.
* Use str(e.value) instead of e.value.message to verify error messages
* Fix some incompatible import (StringIO, Queue)
* Use print function
* Add python3 to .travis.yml
* This is passing on 2.7, 3.2, 3.3, 3.4