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)
* reduce is no longer a builtin, must be imported from functools
   (mptt/models.py)
* mock streams need to have an encoding and a flush() method
   (tests/myapp/tests.py:108)
* division operator does float division by default now, replace
  with // integer division operator.
   (mptt/models.py:492)
* no print statement in python 3, replace with write()
   (tests/myapp/tests.py:121)
* or replace with print(...) which "accidentally" works on python2
  (since the parentheses are syntactically meaningless, as long as
  only one object is being printed)s
   (tests/myapp/doctests.txt:7,41,52,63)
* python3 iterators are called with next(obj), not obj.next());
  and next is now a builtin, so best not to shadow it using
  variable names.
   (mptt/utils.py:24ff)
* python3 itertools izip no longer exists, __builtins__.zip now
  returns an iterator
   (mptt/utils.py:31)
* python3 range now returns an iterator - printing out doesn't
  listify it, so for doctests, need to listify explicitly.
   (tests/myapp/doctests.txt:52,63)
BACKWARDS INCOMPATIBLE: drop support for python 2.5. add test environments for python 3.2 and 3.3, and django 1.5. lots of tests failing
BACKWARDS INCOMPATIBLE: drop support for django 1.2
fix test failures in django 1.5, which appears to have changed the ordering attributes on some form elements are rendered
pass arguments to test runner via tox
fix the python 2, django master tests
Merge remote-tracking branch 'tow/tow-py3-compat' into update-things
some minor tweaks to @tow's good py3.3 compat stuff
remove python 2.5 compatibility imports
fix a test failures under python2
2to3. some test failures on py3 still
avoid some deprecation warnings when running tests
vendor django.utils.six as its really helpful. add unicode_literals everywhere. fix lots of bugs. neeearly passing tests on py3, all the doctests failing on py2 due to unicode literals.
fix default manager issues
raise errors during doctest failures to make it easier to postmortem debug
fixes for doctests on both pythons
fix tests on both python 2 and 3 under django 1.3+ woop!
drop django 1.3 support, use django's version of six. thx @matthiask for the review and suggestion
tests/myapp/tests.py: Fix IOError: test_run_doctest (myapp.tests.DocTestTestCase)

Signed-off-by: Aleksey Avdeev <solo@altlinux.ru>