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