First attempt at making tests toolchain-specific: struggling to find an elegant solution
REVIEW-2398: Use better linker options in test
REVIEW-2367: Moved test for JVM+CPP stuff into integTest subproject
REVIEW-2372: Added sourceSets property to NativeBinary
REVIEW-2397: Put custom arguments first and output file argument last when running CPP compilers/linkers
REVIEW-2406: Include setter in API
Cleaned up public api of C++ stuff
- Extracted ToolChainInternal out of ToolChain
- Removed separate ToolChainAdapter interface
- Extracted BinaryToolSpec (extends CompileSpec) out of BinaryCompileSpec
   - Has tempDir property used for creating options file
   - Moved both into internal model package
- Renamed BinaryCompileSpec.workDir -> objectFileDir
- Provide a ToolChain to compile and link tasks, to keep the compiler/linker specs out of public api
- Use composition instead of inheritance for various CLI wrapper implementations