REVIEW-1684: Polishing
- Use the internal API instead of implementation class (that's what the internal API was added for!)
- Leverage DomainObjectCollection instead of resorting to ugly old Java
REVIEW-1660: Use M2Installation for managing maven
REVIEW-1589: Override Resource.getName() to return an encoded URI when parsing Maven POM
- This is an attempt to support POM with unicode coordinates in Java6 Linux
Allow this test to run on JDK1.6 linux to see if the fix was effective
Added some integration tests for features of Ivy descriptor file parsing
- System property substitution
- 'extending' a parent ivy.xml
    - Fixed resolution of parent ivy.xml by removing the use of Ivy resolution cache ("resolved-*")
    - Added IvyFileModule.withXml() to allow the generated ivy.xml to be customised
Refactored IvyXmlModuleDescriptorParser for clarity
Don't use the Ivy ModuleDesrcriptorParserRegistry to find parser for other ivy files: just use the current impl.
More refactoring simplification of imported ivy code
- Remove code for handling conflict-mediators and dependency-overrides, since they are ignored by Gradle anyway.
- Centralised use of ParserSettings
REVIEW-1651: Use IvyXmlModuleDescriptorParser for verifying ivy.xml before publishing
- Added DisconnectedParserSettings to avoid attempts at download when verifying an ivy.xml that extends another

 This is the 2nd commit message:
REVIEW-1651: Updated design doc
REVIEW-1693: Report the illegal character in error message when attempting to publish with an invalid identifier character.
Fix test that was using invalid ivy.xml when testing artifact publication
Ensure that maven settings file is created properly in tests.
Extracted LegacyDependencyResolver and LegacyMavenResolver out of IvyResolver and MavenResolver. These wrap the real resolvers in a backwards compatible adapter when they're exposed as DependencyResolver via the DSL.
Wired up dynamic resolve mode and switched on the int tests.
Renamed IvyArtifactRepository.getMetaData() to getResolve()
GRADLE-2688: Fix DefaultCachedModuleResolution.isDynamicVersion() - was always reporting 'true'
Removed unnecessary warning from User Guide: see http://forums.gradle.org/gradle/topics/there_is_no_gnu_unzip
Updated release notes and docs for publication validation stories
Validate that artifacts are not duplicates when publishing
- Also check that no declared artifact duplicates the generated meta-data file.
   - Didn't bother checking maven-metadata.xml (it would require a concerted effort to clash with this, including setting version = 'metadata')