Refactored model lookup tests; refs #18586.
Fixed #23522 -- Changed reverse() to return a Unicode string; not bytes
Fixed #23611 -- update_or_create failing from a related manager

Added update_or_create to RelatedManager, ManyRelatedManager and
GenericRelatedObjectManager.
Added missing get_or_create to GenericRelatedObjectManager.
Add myself to AUTHORS and register authorship of ed37f7e

This commit is a record that ed37f7e was my contribution.
Thanks Loic Bistuer for reviewing it.
Fixed misplaced test case.
Fixed #23587 -- Clarified admin template overriding in tutorial 2.

Thanks Petrus van Bork for the report.
Added 1.7.1 release notes for refs #23333.
Fixed #23555 -- Avoided suppressing IndexError in QuerySet.first() and .last()
Fixed typos in comments.
Fixed #23600 -- Made default_storage aware of more settings changes.

Added MEDIA_URL, FILE_UPLOAD_PERMISSIONS, and
FILE_UPLOAD_DIRECTORY_PERMISSIONS to the list of settings.
Fixed flake8 warning.
Fixed #23605 -- added relabeled_clone() method to sql.Query

The problem manifested itself in rare cases where at least double nested
subquery's filter condition might target non-existing alias.

Thanks to Trac alias ris for reporting the problem.
Added external_aliases set to db.models.sql.Query

Sometimes a subquery can refer to outer query's alias. The inner query
must not quote the outer query's alias (PostgreSQL doesn't work with
quoted aliases). The external_aliases set adds information which aliases
are from the outer query.