Further spec updates for multiple publications from a single project
REVIEW-2482: Improved DSL docs for IvyPublication
- Moved javadoc comment 'setArtifacts' into getter so that they are rendered correctly in DSL doc
- Removed separate 'setArtifacts' method from DSL doc
Release notes and user guide docs for customising publication identity
Fixed Ivy publication of project dependencies with customised publication coordinates
- If depended project has no PublishingExtension, use project properties for dependency coordinates
- If depended project has PublishingExtension, then add dependency for each IvyPublication
- Moved mapping of ModuleDependency->IvyDependency into IvyPublication (out of IvyDescriptorFileGenerator)
   - Even closer to having model for customising dependencies...
Improved ivy-publish sample for multiple publications, and added test
Added test for prevention of modifying POM coordinates via pom.withXml()
- Deleted old (ignored) test
Updated maven-publish so that project dependencies correctly handle modified publication coordinates
- Use new MavenDependency type instead of org.gradle.api.Dependency as API for generating POM
- Map ModuleDependency->MavenDependency within MavenPublication
- Added some integration test coverage for multi-project publications with modified/multiple publications
Added sample and docs for modifying pom coordinates with maven-publish
Updated design spec for custom publication coordinates

- Removed identifier attributes from MavenPom/IvyDescriptor: seems like keeping these in one spot is less confusing
- Updated behaviour for project dependencies to match implementation
Can now set 'status' on IvyModuleDescriptor and 'packaging' on MavenPom
- Updated release notes to document breaking change to default 'status' in ivy publication
- No longer set status of IvyPublication from Project.status
Attempted to fix one of the threading issues in the file lock by reworking the contention handler. Simplified the FileLockCommunicator - it is now almost immutable (there's only stop() method) and hence less prone to threading issues.
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.
fix gradle-wrapper ignoring -g / --gradle-user-home switches
Changed ModuleVersionPublishMetaData.getId() to return a Gradle type instead of an Ivy type.
Merge branch 'master' of github.com:gradle/gradle
Test task is skipped when there are no tests. Should resolve recent CI failures.

1. Reworked my recent changes related to testCompile and testRuntime resolution for 'no tests' scenario. Using @SkipWhenEmpty feature breaks certain existing behavior (the validation of the test.single matching result). Now at least when test.single is not used, we have the desired behavior and the test task is skipped (and testCompile/testRuntime configurations not resolved). Reverted the annotation change on the getCandidateClassFiles() to what it was before my changes.
2. In some integration tests I needed to add a dummy test class file so that the test task is not skipped.
Update bndlib to the latest 2.1.0 version