Fixes for Python 3 compatibility

* dict.iteritems() is no longer in Python3 - use dict.items()
   (feincms/_internal.py:52, feincms/models.py:228)
* unicode() is no longer in Python3, replace with six
  compatibility layer (text_type)
   (feincms/admin/filterspecs.py:63
    feincms/admin/tree_editor.py:85,101,224,393
    feincms/module/medialibrary/fields.py:33
    feincms/module/medialibrary/models.py:140
    feincms/module/page/models.py:315
    feincms/templatetags/feincms_thumbnail.py:43
    feincms/tests/page_tests.py:362,384,385,395,401,408
    feincms/tests/tests.py:48
    feincms/translations.py:234)
* dict.has_key(k) no longer in python3, use "k in dict" instead
   (feincms/admin/tree_editor.py:60)
* python3 syntax for accessing Exception objects has changed.
   (feincms/admin/tree_editor.py:392
    feincms/content/richtext/models.py:133
    feincms/module/medialibrary/modeladmins.py:86,160,198
    feincms/module/medialibrary/models.py:175,196
    feincms/tests/page_tests.py:121,1003
    feincms/views/cbv/views.py:27)
* python3 no longer has basestring, use six compatibility
  layer
   (feincms/contrib/fields.py:38,75
    feincms/extensions.py:52
    feincms/utils/__init__.py:19)
* python3 requires "raise Exception(arg)", not "raise Exception, arg"
   (feincms/content/section/models.py:47,50
    feincms/templatetags/feincms_thumbnail.py:17
    feincms/templatetags/fragment_tags.py:95
    feincms/utils/templatetags.py:44,70,95,116,148)
* python3 has no print statement - replace with print function. This
  works "accidentally" on python2 since the extra parentheses have no
  meaning so long as only a single object (ie not a list of arguments)
  is being printed.
   (example/test_utils.py:21-25,31
    feincms/management/checker.py:42,44,50
    feincms/management/commands/feincms_validate.py:24,41,50
    feincms/management/commands/rebuild_mptt.py:19)
* reduce is no longer a builtin for python3 - import from functools
  instead.
   (feincms/models.py)
* When run under python3, django models should have __str__ methods,
  not __unicode__ methods.
   (feincms/models.py:43,82,440
    feincms/module/blog/models.py:44
    feincms/module/medialibrary/models.py:56,129,239
    feincms/module/page/models.py:191
    feincms/templatetags/feincms_thumbnail.py:42
    feincms/translations.py:227)
* python3 iterables can't be detected only by __iter__; you need to check
  for __next__ as well; also strings now have an __iter__ method so must
  be excluded explicitly.
   (feincms/models.py:244
    feincms/module/page/templatetags/feincms_page_tags.py:345
    feincms/templatetags/feincms_admin_tags.py:24)
* cStringIO no longer exists in python3, the equivalent StringIO class
  can be imported from the io module
   (feincms/templatetags/feincms_thumbnail.py:6)
* python3 doesn't allow implicit tuples - parentheses must always be
  supplied.
   (feincms/translations.py:189)