Use the ArtifactResolver to get any meta-data artifacts required when parsing descriptors

- Added a ComponentMetaDataArtifact extends SoftwareArtifact (internal for now)
- IvyResolver, MavenResolver and IvyDependencyResolverAdapter can provide metadata artifacts on request
- Ivy and Pom parsers now request the ComponentMetaDataArtifact for a parent module, removing the construction of artifact instances from the parser.
Started to extract resolution of Artifacts from resolution of Component graph

- Include details of source repository in ModuleVersionMetaData provided by UserResolverChain
    - ModuleSource is now a property of ModuleVersionMetaData
- ArtifactResolver is no longer stateful with respect to source repository, but uses source information from ModuleVersionMetaData
   - ArtifactResolver is not yet extracted into separate service
Split ArtifactResolver out as a separate service

- Removed get/set ArtifactResolver on ModuleVersionResolveResult
- Split RepositoryChainDependencyResolver out of UserResolverChain,
  which is now simply a provider of DependencyToModuleVersionResolver and ArtifactResolver
- Split ProjectArtifactResolver out of ProjectDependencyResolver: lookup the project by path for each resolved artifact.
Make a copy of ModuleVersionMetaData when supplying ModuleSource
- no longer need a MutableModuleVersionMetaData to do so
Removed ErrorHandlingArtifactResolver
Cache correctly in the face of resolution failures
Replaced ResolvedArtifactFactory with a contextualized ArtifactResolver
Split the resolution of artifacts into separate list and download actions

- ArtifactResolver.resolveArtifactSet() determines the set of available artifacts for a module
- ArtifactResolver.resolveArtifact() retrieves an actual artifact file
Use ArtifactResolver to determine set of artifacts for a module version

- Added ArtifactResolveContext as input to request a particular set of artifacts
    - ConfigurationResolveContext indicates that artifacts from a particular configuration required
    - DeveloperArtifactResolveContext includes the artifact type requested
- The decision of which artifacts to include in a resolution is now responsibility of the ArtifactResolver
Simplified PublicationsCrossVersionSpec (REVIEW-4393).
Backport BuildInvocations model to 1.0M5-1.7 toolingApi consumers.
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'
Merge branch 'release' into master

- Renamed MavenCandidateArtifacts -> MavenClassifierArtifactScheme
- Disabled FlatDir support for source/javadoc (temporarily)