Fixed #15053 -- avoid recursion when extending templates

The `extends` template tag now avoids recursion, making it possible for
templates to inherit from third party app templates with the same name.

Impossible without the help and insight of Pablo Martín (thanks!)
Continuing with #15053:

- Global template source loader loader is now outside of ``find_template``
  making it easier to reuse it.

- I've also added the ``skip_template`` parameter to the ``select_template``
  function for the cohesion.

- Docs has been updated (only documented functions are ``get_template`` and
  ``skip_template``.
Now the new improvement of the templates works with the cache template loader (django.template.loaders.cached.Loader)
Refs #15053 -- docs stating the changes in the public template API methods