Changed ModuleDescriptorCache to use Gradle metadata type instead of Ivy metadata type.
Garbage collected and merged a couple of specs.
Renamed some classes.
Changed ModuleMetaDataCache so that it returns Gradle metadata types instead of Ivy metadata types.
Added MutableModuleVersionMetaData.copy() and use this for the in-memory caching, rather than unpacking and reassembling all the parts of the meta-data.