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.