Introduced IvyConfiguration to ivy-publish DSL
- Added IvyConfigurationContainer and IvyConfiguration with implementations
- IvyArtifacts are now added to a particular IvyConfiguration of an IvyPublication
    - Removed various IvyPublication.artifact* methods
    - Specifying a component to publish constructs the "default" and "runtime" configurations
- Published artifacts are the union of artifacts from all configurations
- Ivy descriptor is generated from declared configurations, rather than assuming a fixed set.