Inject a module metadata parser into the `MavenResolver` rather than have it construct the parser every time it requires one, to decouple the resolve from the parser implementation and the things it might need.
Initial changes to dependency resolution to use the Gradle module metadata file when present. The file is downloaded and cached when present, but not used yet. Added a temporary internal flag on `MavenRepository` to enable this behaviour, which is disabled by default. The C++ plugins switch this on.