Fixed #20832 -- Enabled HTML password reset email

Added optional html_email_template_name parameter to password_reset view
and PasswordResetForm.
Fixed #20850 -- Added MultiWidget.needs_multipart_form
Fixed #17667 -- Prevented app loading from skipping nonexistent apps after the first try

Thanks ea2100@ for the report and akaariai for the patch.
Fixed #16986 -- Model.clean() can report errors on individual fields.

This commit provides the tests for this issue but the actual problem was solved
by the ValidationError refactor in f34cfec and ee77d4b.

Refs #20199.
Fixed ordering related test failure

Also PEP8 + python_2_unicode_compatible cleanup done.
Merge pull request #1441 from loic/ticket16986

Fixed #16986 -- Model.clean() can report errors on individual fields.
Fixed #20852 - Fixed incorrectly generated left quotes in docs.

Sphinx generates left single quotes for apostrophes after
code markup, when right single quotes are required. The
easiest way to fix this is just by inserting the unicode
character for a right single quote.

Instances of the problem were found by looking for
">&#8216;" in the generated HTML.
Fixed #15511 -- Allow optional fields on ``MultiValueField` subclasses.

The `MultiValueField` class gets a new ``require_all_fields`` argument that
defaults to ``True``. If set to ``False``, individual fields can be made
optional, and a new ``incomplete`` validation error will be raised if any
required fields have empty values.

The ``incomplete`` error message can be defined on a `MultiValueField`
subclass or on each individual field. Skip duplicate errors.
Fixed #19918 -- Modified select_for_update to run on the write database.
Added section labels in cache docs
Fixed #20865 -- Fixed raw_id_fields to work with callable limit_choices_to.
Fixed #17424 -- annotate() + exclude() bug

The bug was already fixed by 01b9c3d5193fe61b82ae8b26242a13fdec22f211,
so only tests added.

At the same time promote_joins()'s uncoditional flag is gone, it isn't
needed for anything any more.
Use `usegmt` flag in formatdate

Slightly cleaner and faster than string manipulation.
 
This flag has been available since Python 2.4:
http://docs.python.org/2/library/email.util.html#email.utils.formatdate
Fixed #20484 again -- added note to field documentation
Merge pull request #1453 from chrismedrela/ticket20484-improvement

Fixed #20484 again -- added note to field documentation
Fixed #20870 -- Documented django.utils.functional.cached_property
Clarify meaning of models.User.is_authenticated()
Form.clean() does not need to return cleaned_data.

If it does, that will be used as the cleaned_data. The default
implementation has been changed to match this change.
Revert change to the default Form.clean()

This means it doesn't break for people who are doing
`cleaned_data = super(FooForm, self).clean()`.
Added more on @cached_property, refs #20870