Make Cached work with DI and on-disk caches

* Update Cached to use DI. To make this work, I change the old Cached
  class into CachedBuilder. Then I introduce a new Cached class which
  has the same API as the old Cached companion object.
* Make Results serializable by wrapping them before storing them
  in Cached's cache. This allows Cached to work with on-disk caches,
  not just in-memory caches.
Fix omnidoc snapshot check to use play version
Make JsPath#prune retain the original path on success
Merge pull request #3641 from richdougherty/results-disk-cached

Make Cached work with DI and disk caches
Merge pull request #3666 from gmethvin/jspath-prune

The path returned by JsPath.prune should be the original path
Merge pull request #3687 from pvlugter/omnidoc-snapshot-check

Fix omnidoc snapshot check
WS Java API: setTimeout(Int) -> setRequestTimeout(Long)
Merge pull request #3690 from gmethvin/ws-with-timeout

WS Java API: setTimeout(Int) -> setRequestTimeout(Long)