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'
Added some coverage for ivy dependency configuration mappings and fixed some problems that this exposed:

- `*->@` and `*->#` select all configurations of the target module rather than the expected 'self' or 'this' configuration.
- `A->#` selects `A` rather than the 'self' configuration when resolving a configuration that extends from `A`.
Spec updates.