Align implementations of artifact identifier display names DefaultModuleComponentArtifactIdentifier now behaves similar as ComponentFileArtifactIdentifier (showing the full actual file name).
This means that the artifact name used during reporting now contains the version at the usual position in the file name. This way it shows the actual file name for artifacts originating from pom-only maven repositories (except snapshots, which show the SNAPSHOT placeholder) and ivy repositories with default pattern.
The motivation for this alignment is to get the same representation for the same file, independent of whether it was sourced from traditional or Gradle module metadata.
Normalize `ModuleIdentifier` This commit reworks the `ComponentModuleIdentifier`/`ComponentModuleSelector`/`ModuleVersionSelector` classes to use `ModuleIdentifier` under the hood, instead of storing denormalized strings. This has the advantage that we can reduce the use of the module identifier factory, which is called very often during dependency resolution. Sharing instances reduces the need for conversions, and makes comparisons faster.