Refactor getting templates in UserTemplateList
Refactor getting templates in UserTemplateList

This commit switches to the approach we have for folders:

- A property that returns a "source" list of templates, which we
then override to make it user-specific.

- A "get_..." method in the base class that does more filtering on
the source list e.g. by template_type.

The original code worked like this (in UserTemplateList):

1. Check if we're getting templates for a folder. If not, we're at
the top-level so just return as normal - the base class method has
a bit more filtering on it e.g. based on template_type.

2. If we're in a folder, check if the user has access to it. We'll
pretend there's nothing in the folder if they don't have access,
and otherwise return whatever the base class method does.

We can replicate (2) by reusing "all_template_folders" - this is
all the folders a user has access to. We then replicate (1) with
the addition of [None], which represents the service / root.

Local testing shows no performance change before / after, which is
expected as we're replacing multiple small computations with one
big, cached computation, noting that the way this class is used
means that all the templates / folders get iterated over.

alphagov/notifications-admin,alphagov/notifications-admin,alphagov/notifications-admin,alphagov/notifications-admin