GRADLE-2762 - fix publishing to mavenLocal to follow maven rules

Change the PublishToMavenLocal tasks to utilize the Maven Ant
InstallTask under the hood instead of DeployTask. Fixes the issue
where snapshots were being deployed as unique versions to mavenLocal.
Some renamings in BuildSetup plugin

- rename 'setupBuild' to 'init'
- rename SetupBuild task to InitBuild
mention renaming setupBuild -> init in release notes
Added an initial plan for adding cancellation support to the tooling API.
Minor spec edits.
Minor spec edits.
Split out support for `GradleBuild` model with older target Gradle versions into a separate story.
GRADLE-2819: Add integration testcase for stackoverflow
GRADLE-2819: Fix calculation of rootproject/modules when root project has declared parent pom.
GRADLE-2034: Added external contribution to release notes.
Fixed parallel issue with build execution listeners.

1. Reverted the previous fix (e.g. concurrent map in the TaskExecutionLogger)
2. Fixed the problem where the notifications are triggered, this way all implementations of the TaskExecutionListeners, including user's will be safe for parallel build.
In-memory dependency metadata cache no longer uses soft references.

1. As I wrote in the spec, I don't think it is a good idea to use soft references. We also received similar feedback from our users. This cache consumes little percentage of heap but soft references may degrade gc performance. When the app reaches heap limit, the resources cleaned up from this cache won't help much and the app will continue to gc-thrash. I've tested the behavior of the build on a huge project and using soft references or not does not give any conclusive results. However, the common sense hints at avoiding them.
2. We need a good strategy for limiting the caches. Now there are 3 instances of in-memory cache that we should look into finding a consistent approach:
  - task history cache (preserved across builds in the daemon), currently uses fixed items cap
  - resolution results cache (per build), fixed items cap
  - dependency metadata cache (this cache), no cap
 We could use guava CacheBuilder and weight the size of the cache against available heap. This can be combined with other strategies, like items cap, expiration

 Using a soft reference here would arguably make things worse when the app
add trace code for failing testcase on ci which works locally
fix typo in integtest resource
Added integ test coverage that proves that task execution events are synchronised and clients should not worry about thread safety of the task execution listener implementations.
Added daemon hygiene action that is stateful and can host any hygiene/cleanup code the daemon wishes to do.
Made the daemon hygiene action hint the jvm for gc(), after the daemon finishes building. It should not happen too often, so there's some extra logic that makes sure gc() is hinted at most once per 2 minutes (current default, may needs some tweaking).
Moved setting of c/cpp/assembly language conventions into separate *-lang plugins
Automatically create a functionalSourceSet for each component

- SourceSet has name matching component
- Component will be built from functional source set
Remove extraneous configuration of functional source sets from tests and convention plugins.