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.
Finish merge
Change case of DuplicatesStrategy enumeration so that Gradle can automatically coerce strings to enum types.
Merge branch 'master' into DuplicatesDefault