Big shift to how the CachingStores will work.

Essentially the volatile cache set and get will force the users to store
the IVolatileCacheEntry<TData> entry in the underlying store.

1. Allows full expiration support for all types of volatile cache stores.
Consider exes and windows services, dictionary based.
2. Puts another layer on top of the underlying cache store to provide a
more consistent expiration experience.
3. Super cleans up the GCS ILongTermLookupService interface that on here yet.

I added both DataContract and Serializable support using the default, but
not required as the Actual volatile cache write can handle serialization.

I did not put the IVolatileCache override, but it would go on the
BlendedCacheConfiguration object some type of Type/Factory method.

I also have not modified TData IVolatileCache.Get<TData> except in some of
the mocking classes.
unit test changes to support.
switch get method of VolatileCache to return IVolatileCacheEntry<TData>.
Added expiration enforcement inside the IVolatilCacheLookup implementation.
modified and added unit tests were appropriate.