Make MavenProjectIdentity live This way the coordinates are only evaluated when needed. Previously they were evaluated when a publicaiton was created. Lots of users had worked around it by re-setting the values to what should already be the defaults later.
Added a public interface that a `SoftwareComponent` implementation can use to describe its variants. In this change, this interface is used only as a marker interface. When present on a component contained in a publication, the `maven-publish` plugin will generate a Gradle specific metadata file for the publication describing the component. The metadata file doesn't contain anything particularly interesting nor is it used during dependency resolution yet. This change does not add any public way to implement the interface.