REVIEW-2472 Removed dead field from the class. I've tried to rework the test to make it more maintainable (it had lots of mocky interactions and was feeling like an integ test). It's now about 30% smaller yet I think it still has sufficient unit coverage.
Fixed the problem with the cache operations class. The long running operations could not interleave (leading to IllegalStateException). Now the calculation if the long running operation is reentrant should be correct.
Add test case to assert that test results/reports are considered outputs.

This wasn't broken, but we didn't have an explicit test for it.
Invalidate object files and binaries when the tool chain or target platform changes.

Added ToolChainInternal.getOutputType() which returns a unique id for the output it will produce. This id encodes whatever platform specific and tool chain specific details are relevant to the tool chain implementation.
Fixed javadocs.
Removed unused exclude.
Added `Ear` task to user guide section on dealing with archives.
Some spec updates.
Add missing @deprecated tags to old Test report/results stuff and normalise the messages.
If we aren't generating a HTML report, display the URL to the XML results in the error output.
Sonar plugin should be using the XML test results, not the HTML results.
Test that test reports are showing up in the build dashboard.
Add javadoc content for checkstyle.
Make the test reports a container of the more general Report.
Test fix.
Explicitly test for the test reports in the build dashboard report.
Test fix.
Fix for broken int test.
For consistency with maven-publish plugin, renamed descriptor file task in ivy-publish plugin
- from generate${publication.name}IvyModuleDescriptor -> generateDescriptorFileFor${publication.name}Publication
Ensure that the GenerateMavenPom and GenerateIvyDescriptor tasks show up in 'gradle tasks'