Creates a new caching template resolver. The cache implementation being
used depends on the use of the template engine. If multiple templates can
be rendered in parallel, it must be using a thread-safe cache.