Use CppCompileSpec interface everywhere instead of implementation class
- Renamed GppCompileSpec -> DefaultCppCompileSpec, GppLibraryCompileSpec -> DefaultCppLibraryCompileSpec
Separated concept of a binary ToolChain from the actual compiler
- Pull workdir up to BinaryCompileSpec and removed unnecessary CompileSpec interface
- Renamed CompilerAdapter -> ToolChainAdapter, CompilerRegistry->ToolChainRegistry
- Currently, ToolChain has a single createCompiler() method
Added some coverage to verify that the tooling API client receives exactly the same output as if running Gradle from the command-line.
Separated compiling and linking for C++ projects
- Added ToolChain.createLinker() so that a single toolchain can provide multiple compilers and a single linker
- CppCompile task now executes compiler with '-c', so that it doesn't perform linking
- Introduced LinkExecutable and LinkSharedBinary tasks that take the compiled object files and run the linker
- Added separate linkerArgs to NativeComponent and NativeBinary
- Pending:
  - Not yet tested on Windows
  - Requires a major package reorganisation
Fix task names for CppCompile tasks
- Added NativeBinary.getTaskName(verb) to mirror ClassDirectoryBinary, and reuse code
Apply compiler and linker args at the end of the command-line to ensure that they take precendence
Added integration test for incremental build with C++
Introduced static libraries for C++
- Added StaticLibraryBinary type: one instance is added to binaries for each defined NativeLibrary
- Pushed NativeComponent.getOutputFile() down to NativeBinary.
   - Method temporarily remains on NativeComponent
- ToolChain returns a linker specific to the NativeBinary being produced
   - Split executable and shared library linkers for GCC and VisualC++
   - Added 'ar' based linker for static libraries with GCC toolchain
   - Windows 'link.exe' based linker not yet done
- Merged LibraryLinkerSpec into LinkerSpec
- Moved separate CompileSpecToArguments implementations into the Compiler implementations they relate to
Fixed handling of native dependency sets in C++ compiling/linking
Added placeholder javadoc, to satisfy checkstyle
Merged ongoing CPP development into master (easier to deal with merge conflicts than rebase)
Ignore C++ tests on windows until I get them fixed
Added a story to the tooling API spec for exposing the publications of a project.
Moved some finished stories out of the publication spec.
Minor spec updates.
Use a separate temporary directory for compiler-options.txt so that we don't need to exclude it from the compiler output files
Tweak command-line arguments for assembling static library with lib.exe
Re-enable CPP tests on windows
Changed the contract of IvyModule and MavenModule test fixtures' publish() method so that they publish only those artifacts that have changed since last time the module was published, to allow an int test to deal with changing modules better.
Added coverage for handling of non-ascii build logging in the tooling API.