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.

- The cache loader needs to be able to specify the loaders to try in
  ``find_template``. So we appended just an other parameter to ``find_template``
  making them to: ``skip_template`` and ``loaders``.

  I noticed that the only thing that ``skip_template`` is useful for is for
  skipping loaders. So we could squash those two parameters into a single one:
  ``loaders``. If that parameter isn't given the global loaders are loaded.

  The loader skipping could be done outside ``find_template``: in
  ``get_template`` so this last function is the one that now gets the template
  to skip.

- 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``.