Make Cached work with DI and disk caches

* Update Cached to use DI. Introduce the CachedApi as an alternative to Cached.
* Make Results serializable by wrapping them before storing them in Cached's cache.

This PR still needs some work. I'd like to get it into 2.4.
* [x] Get review of DI stuff by @jroper.
* [x] Java version of CachedApi?
* [x] Scaladoc/javadoc
* [x] Improve unit tests to use DI properly
* [x] Remove `//"""` that I accidentally committed!