Added CacheService

Extracted all disk caching logic to a CacheService with two
implementations:

* DefaultCacheService is a dummy implementation. This effectively
 disables disk caching

* SerializationCacheService uses ObjectInput/OutputStream to serialize
entries to disk.