Moved some types from core to coreImpl projects.
Moved attaching descriptor artifact for publication up to IvyBackedArtifactPublisher, plus some simplifications.
Moved the publish metadata types to live with the other metadata types.
Introduced Gradle type for an artifact to be published, to replace Ivy Artifact.
Split LocalComponentMetaData out of ModuleVersionPublishMetaData to represent a component that is built locally (and may or may not be published).