REVIEW-1519: Don't use file-name, PublishArtifact.name or ArchiveTask.baseName as artifact name when publishing to ivy
- Default IvyArtifact.name to null, allowing it to inherit the published module name
- The plan is to decouple how things are generated in the build from how they are published
- Allowed multiple artifacts with same name in IvyDescriptor test code
REVIEW-1519: Create separate ivy configurations for artifacts and dependencies when publishing component
- jar/war artifact is in "master" configuration
- runtime deps are in "runtime" configuration
- "default" extends ["master", "runtime"]
- Added NamedDomainObjectContainer.maybeCreate(name)
REVIEW-1218: Removed magic parsing of filename when constructing publication artifact from file
- Only carry extension from file to published artifact: everything else will be configured explicitly.
REVIEW-1522, REVIEW-1544: Move classes and tests to better packages
REVIEW-1544: Simplified IvyDescriptorFileGenerator
Map Ivy configurations for component from details of component, rather than wiring logic in IvyPublication
- Added SoftwareComponent.getUsages() which returns a set of named Usage
- Each usage has a set of artifacts and dependencies
    - Dependencies are not yet mapped properly into ivy
    - Mapping of usage into Maven is very naive
Don't assume that all dependencies for a Usage are "runtime" in Ivy
- Added IvyDependency api and impl which wraps a ModuleDependency and conf mapping string
- Only currently used by components: user configuration of dependencies is not supported.