Python 3 compatibility

We used six for compatibility and removed all the decoding/encoding stuff as well as tests for it. It made compatibility a whole lot harder first and foremost but it also doesn't add anything to the modern web. If we assume unicode with utf-8 (an assumption that Python 3 makes anyway) then we don't even need the different encodings. All in all, we think it's reasonable to assume that we feed unicode to this module at all times instead of dealing with it on a one-to-one basis.
This indentation style is part of our coding conventions, so we'll revert this change when we apply your pull request