[py3] Avoided returning bytes in Model.__str__

on Python 3.
[py3] Removed redundant __str__ methods.

These classes already have an identical __unicode__ method, which
will be used after an upcoming refactoring.
[py3] Replaced some __str__ methods by __unicode__

These methods actually return unicode.
[py3] Added python_2_unicode_compatible decorator.
[py3] Added fixer for python_2_unicode_compatible.

This doesn't deal with classes that define both __unicode__ and
__str__; the definition of __str__ should be removed first. It
doesn't guarantee that __str__ will return a str (rather than bytes)
under Python 3 either.
[py3] Refactored __unicode__ to __str__.

* Renamed the __unicode__ methods
* Applied the python_2_unicode_compatible decorator
* Removed the StrAndUnicode mix-in that is superseded by
  python_2_unicode_compatible
* Kept the __unicode__ methods in classes that specifically
  test it under Python 2
[py3] Deprecated StrAndUnicode.

This mix-in is superseded by the @python_2_unicode_compatible decorator.
[py3] Explained @python_2_unicode_compatible usage
[py3] Made exception examination py3-compatible.
Fixed #18731 -- Cleaned up split_exclude's use of can_reuse

The outer query's set of reusable joins (can_reuse) was passed to the
inner query's add_filter call. This was incorrect.
[py3] Made __repr__ return str with Python 3
[py3] Always convert values from sqlite3 to unicode strings

Thanks Aymeric Augustin for the review.
Fixed #13844 -- Avoid converting unknown db values to float

This patch removes an unconditional float(value) conversion from db
backend default convert_values() method. This can cause problems when
aggregating over character fields for example. In addition, Oracle
and SQLite already return the bare value from their convert_values().

In the long term the converting should be done by fields, and the
fields should then call database backend specific converters when
needed. The current setup is inflexible for 3rd party fields.

Thanks to Merlijn van Deen for the original patch.
Fixed #18306 -- Made deferred models issue update_fields on save

Deferred models now automatically update only the fields which are
loaded from the db (with .only() or .defer()). In addition, any field
set manually after the load is updated on save.
[py3] Encoded value before feeding it to hashlib.md5
[py3] Fix encoding issues in contrib.sessions
Refix #13844 -- Made FloatField aggregates work on Python 2.6 + Postgres

Fixed a regression introduced in 59a655988ee95e4b4e4646cebea88b620d8fcdd2.
[py3] Removed filename encoding in file_uploads test
[py3] Fixed content encoding in test client

Thanks Andrews Medina for the initial patch.
[py3] Fixed admin_scripts tests