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
Run Travis tests against Python 3.4
Replace division operator with *floored* division

- In Python2 the / operator returns an integer, but in Python3
  it returns a float, e.g. 81/2 == 40(Python2), 40.5(Python3)
- The // operator always provides a *floored* integer
- The window unit tests expect a floored division since they are
  testing for the number of rows/cols
- For negative numbers // behaves differently from C, it actually
  rounds up
Python3: encode/decode strings as &encoding
Allow user to select binary string decoding method

- In particular for Python3 it can be hard to work strictly
  with unicode strings or with binary strings, when dealing
  with return arguments - we now allow the caller to choose
  the intended decoding behaviour
- New Client() constructor argument *binstr* can set the
  default behaviour for decoding binary strings
- For all callable functions, binstr can also be provided
  to override the default behaviour
- Valid values for binstr are
  - 'binary' (the default) that returns binary strings as
    bytes (i.e. Python2 str)
  - 'strict' decodes into Unicode
Python3: Decode strings as Unicode for unit tests