Added basic tests for get_app_config[s].
Made unset_installed_apps reset the app registry state.

Previously the _apps/models_loaded flags could remain set to False if
set_installed_apps exited with an exception, which is going to happen as
soon as we add tests for invalid values of INSTALLED_APPS.
Made the AppConfig API marginally more consistent.

Eliminated the app_ prefix that was more confusing than useful.
Normalized exceptions raised by AppConfig.create.

It raises ImportError whenever an entry in INSTALLED_APPS points
(directly or indirectly via AppConfig.name) to a non-existing module
and ImproperlyConfigured in all other cases.

Catching ImportError and re-raising ImproperlyConfigured tends to make
circular imports more difficult to diagnose.
Added tests for invalid values of INSTALLED_APPS.
Added file forgotten in previous commit, plus one more test.
Fixed #21609 -- Amended CONTRIBUTING.rst pull request guidelines.

Thanks cjerdonek for the suggestion.
Added a test for Apps.has_app.
Fixed #21629 -- Added instructions for loading MySQL time zone definitions.

Thanks Aymeric for the suggestion.
Used app_config.verbose_name instead of app_label|capfirst.

An admin view performed the capitalization in the template, unlike all others.

Refs #10436.
Switched setup.py to setuptools.
Fixed #21582 -- Corrected URL namespace example.

Thanks oubiga for the report.
Properly app_template_dirs when INSTALLED_APPS change.
Don't try to load app directory templates from apps with a path (eg eggs)
Created a constant for the migrations module name.

Mostly for consistency with MODELS_MODULE_NAME; it's unlikely to change.
Fixed #21650 -- Corrected bad advice for plural translation.

Thanks nedbatchelder and claudep.
Fixed a couple flake8 warnings.
Refactored dumpdata with app configs instead of models modules.
Fixed #21692 -- Quote table name when creating it.
Avoided %r formatting on possibly unicode strings.

The u prefix looks bad on Python 2.