chore(cache): Add some nice new internal APIs for caching

This *greatly* simplifies caching logic, especially for memcache-related code. See Datalist.php for the example in this PR.

TODOs:
- [ ] Implement incomplete tests
- [ ] Add back memcached et al support
- [ ] Add tests for refactored classes
- [ ] Split into 2 PRs/commits -- one to add new APIs, another to actually use them in existing classes
- [ ] Deprecate old Caching classes in favor of new ones
Storing everything in a single array value seems too clever. I see how it could save a time bit of memory, but it makes the cache usage confusing.