py3k compatibility via six (re-issue)

Had to close the prior pull request (#43) and reissue - think I screwed up trying to merge in your latest changes to keep the pull-request compatible.

I've made a changes to get the all tests passing for python **2.6**, **2.7**, **3.2** and **3.3**.  

**The actual code changes, as you'll see, are almost trivial and do not require any re-org of the files.**  The change does require the inclusion of the `six` library, which means a dependency.

I didn't change `setup.py` to include `six` in `install_requires` at this point.  I simply added it to the travis.yml file, so the tests would have it.  If this pull request is the direction you want to go with, I'll be happy to update it and include it.

Also, saw this commit in Django, which looks to provide the ability to subclass and specify a metaclass supporting both `__metaclass__` for py2 and with `six`:
https://github.com/django/django/commit/6b03179e126d4df01623dccc162c1579f349e41e
Might want to include that if you think people with want to subclass with custom metaclasses.

By the way, awesome work on this project. And the recent changes to the docs are great.