Ignore failing test on Windows 7
Suppress C++ integTests when no tool chain available

* cpp.gradle: introduce project property 'cppIntegTestDisabled' and  set
systemProperty 'org.gradle.integtest.cpp.toolChains' to value 'none'
when property 'cppIntegTestDisabled' set to true
* SingleToolChainTestRunner: create no executions when systemProperty
'org.gradle.integtest.cpp.toolChains' has value 'none'
* TestPreCondition: add enum  value CPP_TOOLCHAINS_AVAILABLE
* MultiToolChainIntegrationTest: require pre-condition
CPP_TOOLCHAINS_AVAILABLE
fix coding errors in test class
Fix unit test: set explicit file encoding on reading file content
Suppress C++ integTests when no tool chain available
Fix transitive dependency for library jsch (as not exported in IntelliJ)
Update unit tests for task graph/plan executors:
 * fix name of DefaultTaskGraphExecuterTest to DefaultTaskGraphExecutorTest
 * move unit tests targeting DefaultTaskPlanExecutor to dedicated test class
 * extract common code of DefaultTaskGraphExecutorTest and DefaultTaskPlanExecutorTest to helper class ExecutorTestHelper
Fix naming: executer --> executor

* rename TaskGraphExecuter to TaskGraphExecutor
* rename DefaultTaskGraphExecuter to DefaultTaskGraphExecutor
* rename related fields accordingly
Add mutex configuration to to the Task API
Start testing the ParallelTaskPlanExecutor:
 * push common test cases from DefaultTaskPlanExecutor up to new base class AbstractTaskPlanExecutorTest
 * extract logic to create test tasks to new class ExecutorTestHelper + extend logic with option to make make task execution block with CountDownLatches
 * start new ParallelTaskPlanExecutorTest class with 2 new test to verify execution order with 2 worker threads
Keep track of active task mutexes in AbstractTaskPlanExecutor and honour them on determining next task to execute:

* introduce new MutexManager class: to thread-safe manage active task
mutexes during execution of a TaskExecutionPlan
* TaskExecutionPlan.getTaskToExecute(): add arg mutexManager
* DefaultTaskExecutionPlan: extract checking of "ready to execute"
conditions to new method + add a condition for claiming the mutex
* AbstractTaskPlanExecutor: keep one instance of MutexManager for all
worker threads
Clear unused imports
Fix CheckStyle issues
REVIEW-3453: Use an identifier that is serializable.
GroovyModelDsl must implement GroovyObject in order to get correct dynamic dispatch during nested closures.
Move ToolchainRegistry from being a project extension to being registered model.

All configuration of the tool chain registry is done via model rules. This means that all configuration could be skipped if the registry is not needed in a build. However, it always is currently because we always actualise all tasks (which involves interrogating the registry).

This is the first of the native model to be transitioned to the new model configuration scheme. Transitioning the rest is forthcoming.
Make implementation of GFileUtils.mkdirs() more robust on windows
Merge build fixes back to master
Merge task-mutex to master
Git ignore gradle.properties in the root of the workspace