Python3 support

- Refactor code for Python3 compatibility (#13)
- Change the API to default to binary strings - but allow global or per call override (#25) to decode into Unicode
- When running unit tests in Python3 - default to decoding all binary strings into Unicode
- For Python3: Decode API info strings as utf8 (NOT &encoding) since they are generated from utf8 code

For me some unittests are failing (both for python2 and 3) but it is also happening to master, so I'll wait to see if travis is doing the same.