Introduced BuildableModuleVersionPublishMetaData and changed ArtifactsToModuleDescriptorConverter to attach artifacts to the publish meta data rather than the module descriptor.
Spec update.
Changed ProjectDependencyResolver to use the artifact info provided by the publish meta data, rather than looking for a magic extended attribute.
Changed DefaultIvyDependencyPublisher.publish() so that it accepts a ModuleVersionPublishMetaData instead of a ModuleDescriptor, so that it no longer needs to use the magic extra attributes. This in turn means we no longer need to set the extra attribute when resolving and can get rid of the duplicate PublishModuleDescriptorConverter.
Changed ModuleVersionPublishMetaData.getId() to return a Gradle type instead of an Ivy type.