Moved Compiler and CompileSpec to live in languageBase project.
Changed NativeComponentModelPlugin so that it applies the LifecycleBasePlugin instead of the BasePlugin.
Added initial API for Java tool chains.
Changed JavaBasePlugin to attach a JavaToolChain instance to each JavaCompile task instance. The tool chain doesn't do anything yet.
Moved the forking compilation working directory to JvmLanguageCompileSpec, rather than injecting this into the Compiler constructor.
Extracted a superclass out of the daemon backed Compiler implementations.
Moved the temporary directory to use for java compilation to the JvmLanguageCompileSpec, rather than inject into compiler constructors.
Changed the daemon backed Compiler implementations to accept a working dir File rather than a ProjectInternal in their constructors.
changed JavaCompile to use its JavaToolChain to create a Compiler instance.
Inlined InProcessJavaCompilerFactory into DefaultJavaCompilerFactory.
Introduced CompilerFactory, to create a Compiler implementation given a CompileSpec instance.
Made joint compilation explicit on JavaCompilerFactory.
Made JavaCompilerFactory a service.
Changed ScalaCompilerFactory to delegate to JavaCompileFactory to create a Compiler instance for Java joint compilation, and removed AntJavaCompiler.
Added a toolChain property to Javadoc task type, accepts a JavaToolChain. Not used yet.
Added JavaToolChain to DSL guide.
Added some test coverage for generating Javadoc using a different JDK to that running the build.
Changed Javadoc task to use the specified JavaToolChain to generate the Javadoc, rather than forking 'javadoc' directly.
Changed GroovyCompiler to create Compiler directly from Spec instance, and removed DelegatingGroovyCompiler.
Changed ScalaCompile to create the Compiler from the Spec instance and removed DelegatingScalaCompiler.