Replaced some ad hoc methods on IvyHttpModule with methods on HttpResource.
A little more int test coverage for missing modules.
Changed the DescriptorParseContext hierarchy to use Gradle ModuleVersionArtifactMetaData instead of Ivy Artifact.
Fixed merge problem.
Changed VersionLister.getVersionList() to accept a ModuleIdentifier instead of a ModuleVersionSelector.
Reworked ExternalResourceResolver so that when resolving a dynamic version, list all available versions and then select the highest with either a meta-data file or a default artifact. This replaces the old behaviour of listing all versions with a meta-data file and then all versions with a default artifact if no meta-data file found.

- Dynamic versions select the highest version even when a given module is published sometimes with and sometimes without meta-data
- Dynamic versions are more efficient when multiple repositories are used.
Fleshed out int test a little more.
Some reorganisation of ExternalResourceResolver to use some Gradle types in favour of Ivy types.
Introduced IvyArtifactName to represent the stuff Ivy considers important to know about an artifact. Use this in a few places instead of Ivy Artifact.
Added some more unit test coverage for ivy parsing.
Added ModuleVersionMetaData.getArtifacts()
Some minor refactoring