Applied unicode_literals to makemessages command

This also fixes #22686 as some sort of side-effect.
Moved some imports in runtests.py
Fixed #22510 -- Harden field removal to only None.

Refs #8620.

If we allow any value to remove form fields then we get name clashes
with method names, media classes etc. There was a backwards
incompatibility introduced meaning ModelForm subclasses with declared
fields called media or clean would lose those fields.

Field removal is now only permitted by using the sentinel value None.
The docs have been slightly reworded to refer to removal of fields
rather than shadowing.

Thanks to gcbirzan for the report and initial patch, and several of the
core team for opinions.
Fixed #22676 -- makemigrations --dry-run should not ask for defaults

Made the fix in InteractiveMigrationQuestioner class code, rather than
MigrationAutodetector, because --dry-run shouldn't affect whether
MigrationAutodetector will detect non-nullable fields, but the
questioner should skip the question and returns a None for default
(since that won't be used anyway) if --dry-run is used.
Fixed #22688 -- Documented ready() may be called more than once
Removed GeoWhereNode, obsoleted by GISLookup
Removed comment forgotten in 3caf957ed5
Removed code deprecated from Django 1.2
Fixed a few ResourceWarning in the test suite. Refs #22680.
Fixed a ResourceWarning that wasn't properly fixed by the previous commit.

Also removed unused import in runtests.py.
Fixed a few warnings in the testsuite.
Removed executeable bit from a few files.
Restored Python 2 compatibility.
Fixed typo in docs/ref/models/custom-lookups.txt.
Fixed too short title underline in docs.
Fixed #22692 -- Added docs for `makemigrations` two command options.

Added documentation about `--dry-run` and `--merge`.
Fix an error in a documented lookup example.
Fixed #22675 -- makemigrations --dry-run to output migrations to stdout.

`makemigrations --dry-run` will output the complete migrations file
that would be written if it's used along with `--verbosity 3`.
Fixed #22699 -- Configure default settings in some management commands.

This makes it possible to run django.setup() in management commands that
don't need a settings module. In addition it simplifies error handling.

Thanks Claude for the review.
Fixed #21630 -- Simplified management command discovery

Thanks Aymeric Augustin for the report end the review.