Simplify caching, add extension points for TemplateLoaders, fix handling

Simplify caching:
- We were caching too much. Having this second cache made it impossible to bust the cache when the mtime of a file changed

Add extension points for TemplateLoaders
- Certain environments want to look for templates at different places

Fix handling of FileNotFound & Handlebars compilation exceptions
- Can't compile != Can't find file.
- We were closing the stream which always made the response a 200 OK.