Added Python 3 compatibility

Requires `six`, but no code modifications. Also cleaned up Space (using default arguments)

I tried to change existing APIs only when absolutely necessary. I think the only function signature that changes is `valid_data_to_lists` in `composition_model` (as implicit tuple unpacking is no longer supported). Additionally, the following has been changed:

 - all IO is done in unicode instead of byte streams (files are opened in `r` mode instead of `br`)
 - print is now a function. On a side note, printing to stdout shouldn't be done, especially give that logging is already set up for most of the modules.
 - using explicit relative imports
 - division changes from integer to float. For matrix-float division to work the magic method `__div__` in `Matrix` needs to be called `__truediv__`