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.
Added test to check that "java.runtime.version" is not copied from the host of the Tooling API.
Using Guava's ImmutableSet instead of Collections.unmodifiableSet.
Don't set any dependency mediators.
Fix sample.
Added some integration tests for incremental compile
Integration tests for incremental compile handling removed files
Gcc compiler removes outputs for removed source files
Added implementation of incremental compile for C++, working in GCC
Incremental compile for Visual C++
Provide classloader when constructing Serializer for custom class
Fix for removing stale object files on windows
Merge remote-tracking branch 'remotes/origin/sf-lock2' into release
Clean up unexpected lock files in the previous gradle versions cache before running the int tests.
Javadocs and some test coverage for LockOptionsBuilder.
Use the supplied lock options when initialising the cache, otherwise the default (non-portable) implementation is used.
Moved the 'invalid lock file' exception down to StateInfoAccess so that some more context can be added to the error message.
Removed unused import.
Some refactoring of the FileLockAccess classes:

- StateInfoProtocol works only with DataInput and DataOutput, so that it is responsible only for serialization.
- Use buffered reads and writes to read/write the state region contents.
- Read or write the state region exactly once when opening the lock.