Fix for django 1.5 - no force_unicode, smart_unicode

* use force_text, smart_text
Fixes for python3 compatibility

All fixes should work with Python 3.3, as well as being
backwards compatible to at least Python 2.6, possibly earlier.

* Different syntax for capturing Exception objects
   (mptt/forms.py:158)
* dict.iteritems() no longer exists, simply use dict.items()
   (mptt/managers.py:216, mptt/models.py:56,724)
* dict.items, dict.values() are not directly subscriptable, must
  be list-ified first
   (mptt/managers.py:575, mptt/models.py:34)
* basestring doesn't exist in python3, use django.utils.six
  wrapper.
   (mptt/models.py:48, tests/myapp/tests.py:60,63)
* metaclass syntax has changed. The only way to retain python2/3
  source code compatibility is to create the class manually.
   (mptt/models.py:374 and thereabouts)
* unicode() no longer exists, use django.utils.six wrapper
   (mptt/utils.py:88,168)
* django models should have an __str__ method instead of a
  __unicode__ method when used under python3.
   (tests/myapp/models.py:15,25,43,64,87,101)