Port to python3

- Refactor imports into relative imports
- Import StringIO from io module
- Refactor iterator .next() as function next()
Fix discover_api

- discover_api() is now a private method called from the Client
  constructor
- Unpacking assumes utf8 encoding for binary sequences
Reset unpacker to utf8 after calling _discover_api

- Once we are done calling API 0 we can recreate the Unpacker
  to use utf8 by default - this is potentially unsafe but it is
  the best short of msgpack 2.0 binary support
Convert Unicode to utf8 for Python2

- The type() and __name__ do not accept the unicode type,
  added a couple of helpers to automatically convert from unicode
  to utf8 strings (for Python2)
Python3 compatibility fixes

- Replace file() with open()
- Replace xrange() with range() - there is a performance impact for
  this (for Python2) in Python3 range() is already xrange()
- Define basestring=str for Python3
Merge pull request #13 from equalsraf/tb-python3

Support python3