Removed the JvmBinariesContainer subtype of BinariesContainer
- Added Binary as a general type for ClassDirectoryBinary
- BinariesContainer is a PolymorphicDomainObjectContainer of Binary instances
Separated logical and physical representations of components in C++ support, to allow multiple binary outputs for a library
- NativeComponent is a logical representation and NativeBinary is a physical representation (as per spec)
- Base executable {} and library {} blocks are used to configure a NativeComponent
- BinariesPlugin adds a single NativeBinary for each NativeComponent
- C++ Plugin configures compile/install tasks for NativeBinary instances
Removed a bunch of deprecated methods from the existing C++ API
Renamed binaries and compile tasks for C++ plugin:
- ExecutableBinary is named "${executable.name}Executable"
- SharedLibraryBinary is named "${library.name}SharedLibrary"
- Compile task is named "${binary.name}"
- Install task is named "install${binary.name}"
GRADLE-2780 - Added some caching at a few points in the class loader graph, to speed up probing for default imported classes in build scripts (and other things).

- Moved class loader handling for a build out to a new BuildClassLoaderRegistry service and off GradleInternal.
- Wire in a caching class loader before the plugins and as the (shared) parent class loader for all scripts.
Changed int tests so that they don't use removed internal property.
Make Test implement Reporting.

The biggest change here is that we now consider the JUnit XML output a report, instead of a result. This also means that it shows up in the build dashboard.

The documenation for the Java plugin or the Test task has not been updated. There is also no test coverage that the newly deprecated API correctly delegates to the replacement.
Stubbed out onEndWork()
Merge branch 'master' of github.com:gradle/gradle into sf-lock