caching prototype without invalidation
remember cache keys

… so we can purge it later
add cache invalidation
add contribution robustness
hook modules into cache invalidation
Merge branch 'template-caching' into release-1-10-14