Better unicode support

- [x] Make py2/py3 compatible string repr
- [x] Move logic to create human-readable object repr into the `__str__` method