Fixed #17008 -- Added makemessages option to not remove .pot files.

Thanks airstrike for the report and initial patch, Julien for an
enhanced patch and Jannis for reviewing.
Modified makemessages so it creates .pot files once per invocation.

It creates a `locale/django.pot` file once instead of one
`locale/<locale_code>/django.pot` file for every locale involved.

Thanks Michal Čihař for the report and patch.
Simplified i18n commands tests.
Made (make|compile)messages commands accept multiple locales at once.

Thanks Craig Blaszczyk for the initial patch. Refs #17181.
Avoided unnecessary recreation of RelatedObjects

Refs #19399. Thanks to Track alias KJ for the patch.
Removed models/related.py BoundRelatedObject

The class wasn't used anywhere except in RelatedObject.bind(), which
wasn't used anywhere. The class had one method defined as
NotImplemented, yet the class wasn't subclassed anywhere. In short, the
class was dead code.
Fixed #19632 -- Bug in code sample.

Thanks grossmanandy at bfusa com and Simon Charette.
Fixed #19628 - Noted that app for custom user model must be in INSTALLED_APPS

Thanks dpravdin and Jordan Messina.
Fixed #19606 -- Adjusted cx_Oracle unicode detection.
Refactored makemessages command
Fix in makemessages refactoring plus UI tweaks.
Fixed #17813 -- Added a .earliest() method to QuerySet

Thanks a lot to everybody participating in developing this feature.
The patch was developed by multiple people, at least Trac aliases
tonnzor, jimmysong, Fandekasp and slurms.

Stylistic changes added by committer.
Added missing versionadded 1.6 to docs of earliest()

Refs #17813
Cleaned up testing  models.py added for earliest()

The main cleanup was removal of non-necessary __unicode__ method. The
tests didn't break on py3 as the string representation was never used
in the tests.

Refs #17813. Thanks to Simon Charette for spotting this issue.