Revert "Fixed #23892 -- Made deconstructible classes forwards compatible"

This reverts commit f36151ed169813f2873e13ca9de616cfa4095321.

Adding kwargs to deconstructed objects does not achieve useful
forward-compatibility in general, since additional arguments are silently
dropped rather than having their intended effect. In fact, it can make the
failure more difficult to diagnose. Thanks Shai Berger for discussion.
Deprecated dirs argument to override TEMPLATE_DIRS.

Cancels 2f0566fa. Refs #4278.
Introduced a template engine class.

Moved Django templates loading infrastructure there.
Removed unused API get_template_loaders.

It was introduced in a recent refactoring so this isn't an issue.

Then renamed _get_template_loaders to get_template_loaders.
Moved template loaders management in Engine.

Passed the engine instance to loaders. This is a prerequisite for
looking up configuration on the engine instance instead of global
settings.

This is backwards incompatible for custom template loaders that override
__init__. However the documentation doesn't talk about __init__ and the
way to pass arguments to custom template loaders isn't specified. I'm
considering it a private API.
Removed dependency of template loaders on Django settings.
Added to each Context a reference to the Engine.

It's only available during the rendering.
Move compile_string into the Engine class.
Moved make_origin into the Engine class.
Encapsulated ALLOWED_INCLUDE_ROOTS in Engine.
Encapsulated TEMPLATE_CONTEXT_PROCESSORS in Engine.

Since RequestContext doesn't know its Engine until it's passed to
Template.render() -- and cannot without breaking a widely used public
API -- an elaborate hack is required to apply context processors.
Encapsulated TEMPLATE_STRING_IF_INVALID in Engine.
Encapsulated TEMPLATE_DEBUG in Engine.
Removed direct references to template-related settings.