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
Can we assume asserts will be turned on? Exceptions seem like a more predictable check. Are any other high-profile PHP projects are using it?