Fix the CachingThreadSafeAuthenticatedRestClient, previously calls were being passed down to the underlying types based on explicit interface implementation.  Throw on calls to any non-thread safe methods.  Also ensure we pass on authentication.
Switch to always use the caching rest client.
Move class to more obvious location.
Ensure that the key is unique, as the resource does not get expanded until the request is made.
Move to using extension method on ICacheClient for Func<T> resolution fallback.
Consolidate code paths, move to a sensible location.