C++ spec update
Mark TestDescriptor as having an internal protocol so our listeners can assume the internal specialisation.
Split some responsibilities in the test output writing infrastructure.
Pass the test descriptor through to the output serializer.
Split the test serializer into read and write parts.

This is an interim step.
Split the collection of test results from the reading of them later.
Class rename.
GRADLEREV-13 - Store test output in one indexed binary file.
GRADLEREV-9 - Store test output events by test id instead of name.
Test fix.
Avoid Java 6 API.
GRADLEREV-12,GRADLEREV-10 - include class level output in junit at suite level in output per test case mode.
Create a separate CppCompile task for each CppSourceSet
Switched the cpp plugin to use the new project.sources DSL

- CppPlugin attaches a CppSourceSet to every defined FunctionalSourceSet
- CppSourceSet.fullName gives a unique name for the sourceSet (not just unique for parent FunctionalSourceSet)
    - CppCompile tasks now include full source set name in task name
- Updated convention plugins to use new DSL instead of cpp extension
- Removed the CppExtension
Allow a FunctionalSourceSet to be added directly to a NativeBinary/NativeComponent
Initial cut of support for compiling C sources

- Only GCC supported so far
- Quite a bit of duplication with C++ stuff (CSourceSet, CCompile, CCompileSpec, etc)
   - Will deal with this when we add Assembler support as well
C-language support for VisualCpp
GRADLE-2825 - disable the duplicate file deprecation warning.

If no strategy has been set and there are duplicates, notification is sent to the info logger.
Avoid Java 6 API.
Remove duplicated test.