Improved caching mechanism

* Fixed several small issues with caching process to make it more multisites/subsites friendly
* Added tagging to underlying cache layer
* Abstracted much of the frontend proxying work to separate class
* Better pattern matching for on-demand caching
* CachedFragments abstraction