Py3k

I realize this is a pretty fat change set, let me know if I need to change or fix anything. One change that might have major side-effects is my usage of `django.utils.encoding.force_text()` in place of `django.utils.encoding.force_unicode()` as the latter is only available in Python 2 and the former is only available since Django 1.5. If Django 1.4 support is critical, I can implement a comparable function (based on the Django 1.5 code) to handle unicode conversions in those instances.