Python 3 - properly handle `__str__` vs `__unicode__` .

Also test for it, which increases test coverage to 100%.