Expurged INSTALLED_APPS from code and tests.

Except the app cache code and a few specific tests, of course.
Improved set_available_apps() in several ways.

- Tested consistency the current app_configs instead of INSTALLED_APPS.
- Considered applications added with _with_app as available.
- Added docstrings.
Complained on override_settings(INSTALLED_APPS=...).

Currently such overrides aren't reflected in the app cache.

It would  be possible to handle them. But that doesn't look like a very
good API. It makes it complicated to express "add this app" and "remove
this app", which are the most common operations on INSTALLED_APPS.
Added the ability to supply custom app configs.
Moved apps back in the toplevel django namespace.

Reverted 4a56a93cc458e9ab4dcab95d9f5067d4975dd1a2.
Made AppConfig importable from django.apps.

It is a public API.
Used application verbose names in the admin.
Changed has_app to return a boolean.

That matches its name ad its purpose better.
Renamed has_model to get_registered_models.

That matches its return type better.
Syntax error.
Moved a test that didn't require Selenium.
Made apps available for loading traslations in a test.
Fixed a flaky test.
Fixed #21651 -- Remove recapitalize.

It was not used inside Django, is not tested or documented. Consequently
remove without deprecation path.

Thanks to @vajrasky for bringing it to our attention.
Used a more translator-friendly format in admin sites.py
Refactored INSTALLED_APPS overrides.

* Introduced [un]set_installed_apps to handle changes to the
  INSTALLED_APPS setting.
* Refactored [un]set_available_apps to share its implementation
  with [un]set_installed_apps.
* Implemented a receiver to clear some app-related caches.
* Removed test_missing_app as it is basically impossible to reproduce
  this situation with public methods of the new app cache.
Added modify_settings to alter settings containing lists of values.
Dropped AppCache._empty, _with_app and _without_app.

It's now easier to achieve the same effect with modify_settings or
override_settings.
Imported override_settings from its new location.
Avoided loading repeatedly the same models module.