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:
- [x] Don't cache the "loadAll" results as a single entry.
- [x] check array_key_exists to avoid a notice in `get()`
- [x] Implement incomplete tests
- [x] Split into 3 commits
    - remove composer.lock
    - add new APIs
    - use new APIs in Datalist

Going to leave these TODOs for a later PR, unless there are objections:
- Add back memcached et al support for Datalist service
- Add tests for refactored classes
- Deprecate old Caching classes in favor of new ones

Sounds like @mrclay has some good use-cases that call for more API surface.