Adding cache manager implementation

This pull request adds the cache manager header file and implementation. For now, this uses the disk for caching. At some point, we could swap out the underlying functionality to use ```SmartStore``` instead, while keeping the interfaces the same.