improve ivy test fixtures

- handle ext attribute
- provide access to any ivy artifact
rename/move maven-specific artifact resolution test
add ivy-specific artifact resolution test
factor out maven candidate artifact computation into separate class
implement maven-style javadoc/sources artifact resolution for flatdir repositories
introduce SoftwareArtifact#getFailure

- Can't think of a good way not to have this method. I don't think it's worth it to have a separate model for failures.
expose any artifact resolution failures that occur while executing artifact resolution query
only try to set sources and javadoc jar files for ide dependencies if they were resolved successfully
added integration test to ensure that idea plugin correctly resolves and attaches javadoc and sources jars
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
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.