Properly assigned app_label to GIS test models.

Used abstract inheritance to cut down on code repetition.
Fixed a few issues in previous commit.
Readded field unadvertantly removed in fedfd5030
Fixed #21206 -- Fixed test discovery without labels

Added test to verify an empty label performs discovery on the current
working directory.
Removed unused function in test_runner tests

This was used for python 2.6 and unittest2 compatibility. It was
forgotten when the code that used it was removed.
Documented unicity rules in INSTALLED_APPS.

Refs #12288, #21679.
Wiped get_commands() cache when INSTALLED_APPS changes.

Refs #21018, #21688.
Fixed #21018 -- Reversed precedence order for management commands.
Several small whitespace fixes for styleguide/flake8 violations
Adjusted previous commit for Python 3.
Updated release notes on app_label.

Django determines automatically which application models belong to,
provided the application can be imported without importing models.
Prevented calling setup() inside catch_warnings

When django.setup() (and then configure_logging) is called inside
catch_warnings, logging setup is negatively affected (notably
warnings.showwarning definition).