Fixed #19483 -- Improved import error message in contrib.comments

Thanks Valentin Lorentz for the report and the suggested fix.
Fixed #19279 - Clarified order of database setup and Django install.

Thanks colinnkeenan for the suggestion.
Fixed #19197 -- fixed convert_values() for nullable numeric fields

Cleaned up the implementation of base convert_values() a little, and
made sure it accepts None as a value for numeric fields.

There are no tests attached. The reason is that not all of the
convert_values() accept None as a value for numeric fields (for example
sqlite3.convert_values()).

The reason the base convert_values() needs to accept None is that this
situation might arise in custom compilers for 3rd party backends. It
is easy to keep the convert_values() working, so lets do that.
Made sure connections are actually closed in backends tests
Fixed #19485 -- Python 3 compatibility for c2a6b2a4.

Refs #9589.
Fixed typo in WidthRatioNode's error.
Replaced '__' with LOOKUP_SEP in sql/query.py

Thanks to Simon Charette for report.
Fixed #19441 -- Created PostgreSQL varchar index when unique=True

Thanks Dylan Verheul for the report and Anssi Kääriäinen for the
review.
Merge pull request #587 from pyriku/19430-license-setup-py

Fixed #19430 -- Added 'license' value to setup.py
Fixed #17312 - Warned about database side effects in tests.

Thanks jcspray for the suggestion.
Fixed #19442 - Clarified that raw SQL must be committed.

Thanks startup.canada for the suggestion.
Fixed #19470 - Clarified widthratio example.

Thanks orblivion for the suggestion.
Added PASSWORD_HASHERS to settings reference document.
Fixed #18172 -- Made models with __iter__ usable in ModelMultipleChoiceField

Thanks to Patryk Zawadzki for the patch.
Fixed #19401 -- Ensure that swappable model references are case insensitive.

This is necessary because get_model() checks are case insensitive, and if the swapable check isn't, the
swappable logic gets tied up in knots with models that are partially swapped out.

Thanks to chris@cogdon.org for the report and extensive analysis, and Preston for his work on the draft patch.
Fixed #19500 -- Solved a regression in join reuse

The ORM didn't reuse joins for direct foreign key traversals when using
chained filters. For example:
    qs.filter(fk__somefield=1).filter(fk__somefield=2))
produced two joins.

As a bonus, reverse onetoone filters can now reuse joins correctly

The regression was caused by the join() method refactor in commit
68847135bc9acb2c51c2d36797d0a85395f0cd35

Thanks for Simon Charette for spotting some issues with the first draft
of the patch.
Fixed #18854 -- Join promotion in disjunction cases

The added promotion logic is based on promoting any joins used in only
some of the childs of an OR clause unless the join existed before the
OR clause addition.
Fixed a regression in distinct_on

Caused by regression fix for #19500.
Fixed #19387 -- Preserved SafeData status in contrib.messages

Thanks Anton Baklanov for the report and the patch.
Fixed #19506 - Remove 'mysite' prefix in model example.

Thanks Mike O'Connor for the report.