GRADLE-2837: Ensure that a dependency project is fully evaluated before it is used by a referencing project in publishing
Mention in the release notes that our handling of Ivy configuration mappings has changed. Also some minor editing.
Make copy specs and file copy details not extensible (in DSL terms).

This is not the most elegant change. The changes to the class generator were made in such a way to change as little is possible due to the timing of this change in the release cycle.

The way we are achieving this functionality (i.e. disabling generating extensibility support) will change in the next release, therefore I am not going to document it in the release notes.
REVIEW-2549: Moved creation of a lifecycle task for binary into LanguageBasePlugin
A bunch of tidy-ups around C++ task implementations

- CppCompile/CCompile
    - Extracted common base class for CppCompile and CCompile
    - Renamed BaseCompileSpec -> NativeCompileSpec
    - Added CCompile to the DSL reference
- Assemble task:
   - Removed 'macros' (if supported, they should be different to the C macros)
   - Added to the DSL reference
- InstallExecutable (REVIEW-2554):
    - Added to DSL reference
    - Use nativeplatform FileSystem.chmod to set executable permissions
Revert "GRADLE-2814, GRADLE-2831: upgrade dependency on ant to 1.9.2" to check if this fixes the java 1.5 builds

This reverts commit 19b9b6deac31f03006fba0b11ffa80d8e55dd501.
Changed CopySpec.getDuplicatesStrategy() so that it returns the effective strategy, rather than null, when no strategy has been defined, for consistency with the other inheritable properties. Also changed FileCopyDetails.duplicatesStrategy so that it is not nullable.
Removed @Nullable from ExternalResource.getMetaData().
Merge remote-tracking branch 'remotes/origin/release'
Fixed a merge problem.
REVIEW-2568: Minor fix
Moved C and ASM language support into separate packages
Renames in C++ land
- BinariesPlugin -> NativeBinariesPlugin
- BinaryOutputTask -> BuildBinaryTask
Reorganised plugins for C++

- Renamed NativeBinariesPlugin -> NativeBinariesModelPlugin
- Added NativeBinariesPlugin that creates general tasks for native binaries
   - Link task, Static library task, Install task
- Extracted CppLangPlugin, CLangPlugin and AssemblerLangPlugin out of CppPlugin
   - These plugins provide language support (including tasks) but no project conventions
- CppPlugin now applies all language support and provides project conventions
Fix toString representations of native source sets
GRADLE-2831: Update ant dependency to 1.9.2.

- Ant versions < 1.8.4 didn't support zip64 archives. Since java 1.5 has problems with zip64 archives we stick to the old archive mechansim and never use Zip64.
- In the future we should at least offer an option to create Zip64 archives
Change CopySpecContentVisitor to use functions instead of being a stateful visitor.

This reduces the margin of error and reduces the temptation to hold on to state when it's no longer needed.

A following change will improve the names to reflect the new approach.
Rename the CopySpecContentVisitor type to CopyAction.
Improve FileCopier to be stateless.
Remove redundant tests.