Fixed tests for use with Python 3
Added tox.ini for Python 2 / 3 testing
Cleanup of blank lines
Replaced use of file() by open() and make sure file is properly closed afterwards
Fixed PuzzleFormatError to inherit from Exception
Refactored encoding to be a module constant as we'll need it elsewhere
Make sure ACROSSDOWN is provided as a bytes object
Reading a string means searching until '\0' as bytes indicating string termination
Only make use of str/unicode and range/xrange as they are available in that Python version
Make sure we always pass bytes objects to the data_cksum function
Use old-style division when computing row in grid
Fixed AttributeError as this constant is no longer available; use ascii_uppercase instead
Fixed shuffle function to use old-style division and the functools.reduce function
Use next function instead of assuming that t has next method
Store fill and solution as bytes and perform encode/decode where needed
Reduced errors in tests when running with Python 3 by using bytes/str where needed
Make sure is_blacksquare is always called with a character
Fixed data to have a bytes object appended to it
Always compare version as string with the given version string
Make sure parse_bytes is indeed called with a bytes object