Don't serialize using a temporary byte array, just serialize directly to/from the stream.
Removed unused method and class.
Changed DefaultTaskArtifactStateCacheAccess so that it opens the cache and creates indexed caches eagerly, as the implementations take care of all the laziness already.
Use Kryo rather than DataInput backed encoders for serializing cache keys and entries.
Use more efficient serialization that Java serialization for simple cache keys (String, Long, and File).
Bumped the cache meta-data version due to recent changes in meta-data caches.
Only need to store the component selection reason for a dependency graph edge only if it is unresolved.