Cache panel

This set of changes adds a panel to track cache use. It does a few things:

* Track the number of read/write/delete operations on each cache engine.
* Track the number of cache misses.
* Add timers for each and every cache operation.
* Provide a button to clear a cache from the UI.

This is all done by dynamically reconfiguring Cache at runtime with proxies. It was nice to see the investments we made around improving dependency injection pay off.
Python brain damage.