Further separation of 'legacy' ivy compatibility code from the rest

- Split legacy RepositoryCacheManager (and impls) from RepositoryArtifactCache
- Moved legacy cache code together with custom dependency resolver wrapper into a separate package
Introduced GradleParserSettings to use instead of ivy type when parsing

- Ivy ParserSettings is still used in parsing with legacy resolvers
- Removed all extraneous methods to clarify the requirements of gradle metadata parsers
Removed most of the uses of IvySettings in metadata file parsing

- Still use IvySettings to get top-level resolver (e.g. for resolving parent POM)
- Removed namespace functionality that requires setting namespace values on IvySettings
- Implemented a fixed set of ivy PatternMatchers to use with ivy excludes
- Only substitute System properties into ivy.xml files (no custom ivy variables are taken from settings)
Tightened up the interface between descriptor parsing and dependency resolution

- Renamed GradleParserSettings -> DescriptorParseContext
- Replaced GradleParserSettings.getResolver() with:
    - DescriptorParseContext.getModuleDescriptor() and
    - DescriptorParseContext.artifactExists()
Supply a specific DescriptorParseContext for parsing cached descriptors
ExternalResourceResolver implements IvyAwareModuleVersionRepository directly
Use Gradle types instead of Ivy DependencyResolver for meta-data parsing in ExternalResourceResolver

- Use current ExternalResourceResolver for checking existence of artifacts
- Use top-level UserResolverChain for loading parent/imported module descriptors
- ExternalResourceResolver is very nearly ivy-free!
Moved VersionMatcher, LatestStrategy and PatternMatchers into separate package
ExternalResourceResolver no longer uses IvySettings
Use Gradle's VersionMatcher and LatestStrategy in UserResolverChain
Ensure that integ tests for ivy include and parent POM include caching test
Don't use IvySettings when parsing cached ModuleDescriptor files
Ivy is only required in resolution when a custom resolver is used

- But it's still initialized every time...