Adapt master_server to use six where appropriate

Initial progress on the whole 'support Python 3' front
Sixification of source.message

This still leaves a couple of tests failing for
"str doesn't support the buffer API" which I will revisit.
Python 3 string/bytes compat for utility classes

Both classes have a permanent __unicode__ method. Python 2 also has a
__str__ for bytestrings which just encodes the Unicode version to the
default encoding. On Python 3 __unicode__ is aliased as __str__ and
__bytes__ does what __str__ does in Python 2.

Tests should probably be added for handling comparison to bytestrings.
IMO comparing to bytestrings shouldn't be supported.
Ensure tests run on Python 2.7 still
Handle struct format type differences

Python 3's struct takes Unicode formats but on Python 2 it must be
bytes.
Update Python 3 support section