Fixed #20583 -- ORM always uses setup_joins() for join generation

There were a couple of places which used Query.join() directly. By
using setup_joins() in these places the code is more DRY, and in
addition there is no need to directly call field.get_joining_columns()
unless the field is the given join_field from get_path_info(). This
makes it easier to make sure a ForeignObject subclass generates joins
correctly in all cases.
Fixed #20464 -- Added a `total_error_count` method on formsets.

Thanks to frog32 for the report and to Tim Graham for the review.
Fixed #20614 -- Typo in documentation.
Added myself to the commiters list.
Fixed #20615 -- Added trove classifiers for major Python versions.
Refactored ValidationError to allow persisting error params and error codes as the exception bubbles up
Fixed #20199 -- Allow ModelForm fields to override error_messages from model fields
Fixed #20618 -- Fixed regression in `BoundField.label_tag`.
Fixed #20593 -- Allow blank passwords in check_password() and set_password()
Fixed #20079 -- Improve security of password reset tokens
Merge pull request #1280 from erikr/improve-password-reset2

Fixed #20079 -- Improved security of password reset tokens
Fixed #6903 - Preserve admin changelist filters after saving or deleting an object
Merge pull request #1281 from loic/ticket6903

Fixed #6903 - Preserved admin changelist filters.
Fixed #14930 -- values_list() failure on qs ordered by extra column

Thanks lsaffre for the report and simon29, vicould, and Florian Hahn
for the patch.

Some changes done by committer.
Fixed broken reference in documentation.
Fixed MySQL failing test introduced by c86a9b6
Merge pull request #1282 from loic/ticket6903

Fixed failing test on MySQL since c86a9b6
Removed several unused imports.
Fixed #20288 -- Fixed inconsistency in the naming of the popup GET parameter.

Thanks to Keryn Knight for the initial report and reviews,
and to tomask for the original patch.
Itty bitty typo fix.

"deletes" was missing it's last e.