Added component support to ivy publication
- Refactored IvyPublication to be a lot more like MavenPublication
- IvyPublication must be explicitly added to publishing.publications
- Component can be explicitly added to IvyPublication
- Still very much a work-in-progress: only java and web components can be published
    - Cannot add extra artifacts, many tests still broken
Gutted IvyPublisher so that it no longer converts IvyPublication->Configuration->ModuleDescriptor->Artifacts
- Direct conversion from IvyPublication -> ivy Artifact that is passed into resolver for publishing
Removed the need to construct a temporary configuration object to generate ivy.xml with ivy-publish plugin
- Added a couple of methods to ModuleDescriptorConverter so parts can be used without creating Configuration
   - Refactored DependencyDescriptorFactory to separate internal factory implementations from delegating factory
- GenerateIvyDescriptor task now directly builds an ivy ModuleDescriptor from the supplied publication
Started adding custom artifact support to ivy-publish plugin (based on maven-publish support)
- Added IvyArtifact and IvyArtifactSet
    - Replaced use of PublishArtifact with IvyArtifact
- Added IvyPublication.artifact(source) and IvyPublication.artifact(source, config)
- Added IvyArtifactNotationParser and various implementations of IvyArtifact for file/archive/publishArtifact
Improved generics for maven publishing API
Set IvyArtifact.type == extension for file-based artifacts. 
- Need to decide if we need to support classifier in published ivy patterns.
Renamed/refactored ivy-publish integration tests to be more similar in structure to maven-publish integ tests