Split TemplateLoader's cache business into another interface and class. This creates the CacheBackend interface, which will allow for a database cache, and one concrete implementation FileCacheBackend. This implementation implements the existing TemplateLoader cache behavior.