All methods relies on a template name. A template name is a
"logical" name for the template, and as such it does not refer to
a path on the filesystem (in fact, the template can be stored
anywhere, like in a database).
The methods should accept any name. If the name is not an instance of
TemplateReferenceInterface, a TemplateNameParserInterface should be used to
convert the name to a TemplateReferenceInterface instance.
Each template loader use the logical template name to look for
the template.