Implement kvcache profiling with a proxy instead of in each cache
Summary:
We have a lot of profiler code duplication right now for a very marginal benefit (slightly better information about cache access from Memcache caches). Instead, use a Proxy to implement profiling on top of caches, then delete the four copies of the cache code from the APC, memory, disk and request caches.
(This is motivated by wanting to add a new cache for Diviner, which would have meant copy/pasting all this code again. I also anticipate other uses for proxies: prefixing all keys; isolating writes for tests.)
Test Plan: Ran unit tests.
Reviewers: btrahan, vrana
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T988
Differential Revision: https://secure.phabricator.com/D4287