Fixed #21478 -- Corrected docs for when Field.db_type() is called.
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.
Renamed two tests so they actually run.
Fixed override_settings when set_available_apps raises an exception.

Previously, this would corrupt the settings, because __exit__ isn't
called when __enter__raises an exception.
Replaced ad-hoc caching of get_models with lru_cache.

Invalidate properly the cache whenever all_models or app_configs change.
This fixes some isolation issues in the test suite.
Invalidated get_models cache in a few more places.
Use cached_property for request.GET and request.COOKIES
Renamed AppCache to Apps.

Also renamed app_cache to apps and "app cache" to "app registry".

Deprecated AppCache.app_cache_ready() in favor of Apps.ready().
Fixed #21662 -- Kept parent reference in prepared geometry

Thanks Robert Scott for the report.
Dropped support for GEOS < 3.1
Added more spatial predicates for prepared geometries

GEOS 3.3 added crosses, disjoint, overlaps, touches and within
predicates on prepared geometries.
Documented the Apps and AppConfig APIs.
Updated a few doc paragraphs following the app-loading refactor.
Typo fix for exception message.
Merge pull request #2108 from jgastal/master

Typo fix for exception message.
Added a missing import and removed an unneeded import