Integration test for caching of artifact query resolve results
Jar file is optional for any maven module with packaging='pom'

- This reverts an earlier change.
- The plan (not yet done) is to move the check for jar so that it's done
  when resolving artifacts, and not when parsing the POM.
Move the check for optional jar artifact into MavenResolver

- For a maven module with packaging='pom', the MavenResolver will check for existence
  of a jar artifact and supply it when present
- Note: the implementation is currently broken under caching: we will only detect the
  jar artifact on the initial resolve, due to an issue with caching the effective
  'packaging' of the module.
Fixed caching of module metadata so that isMetaDataOnly is cached

- This improves the state of resolving maven modules with packaging='pom':
  these will now resolve correctly when online, but HEAD requests are made for every resolve
Refactored ModuleVersionRepository API to be more consistent with ArtifactResolver

- Artifact resolution methods now mirror those on ArtifactResolver
ModuleVersionRepository extends ArtifactResolver
Removed Ivy artifact accessor on ModuleVersionArtifactMetaData

- This will make caching of these easier.
Set of artifacts for a module is now cached

- Added separate ModuleArtifactsCache for [repo+module+context]->[artifacts]
    - Introduced an 'id' to uniquely identify an ArtifactResolveContext
- Extracted a common Serializer for ModuleVersionArtifactIdentifier
- No longer make extra HEAD requests when resolving artifacts for maven module with
  packaging='pom'