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.
Reordered the new and noteworthy sections.
Reordered the deprecations and breaking changes sections.
Some release note edits.
Added a placeholder for the release note preamble.
Renamed `dependencies.componentMetadata { }` to `dependencies.components { }`.
Tweak the release notes for 1.8
Fleshed out the release note introduction
GRADLE-2889 Avoided dependency leaks for detached configurations.

configuration.getPath() does not return unique value for detached configurations (e.g. in 2 different projects, there may be a detached configuration named 'detachedConfiguration1'). This might be something worth fixing on its own. For now, I've made the dependency results caching based on opaque id which are configuration instances. This fixes the problem.
Added some temporary diagnostics for serialization of the old dependency graphs.
Fixed ResolvedConfigurationIdentifier.toString().
Wrap exceptions thrown by LenientConfiguration and ResolutionResult implementations, to add more context.
GRADLE-2890 - some fixes to DependencyGraphBuilder exposed by the graph serialization:

- Clean up outgoing unattached dependencies when a module version is evicted so that they are not later traversed.
- Restart all selectors for a module when a conflict for the module is resolved, even if there are no incoming dependencies, as new incoming dependencies may be discovered later.
Introduced a builder for ServiceRegistry.
Use builder in a few places.
Reworked DependencyManagementServices so that it contributes regular services to an existing scope rather than creating a new scope.
Tweaked generics.
Added some notes to a few specs.
Merge branch 'release'