Better patchIvyDependencies() in Assemble

Rather than trying to decompose and reassemble a new
ModuleDescriptor, which is bound to be incomplete, we
add instead a full wrapper, overriding the previous
dependencies and ModuleRevisionId with the new values.
That should preserve *all* of the information contained
in the existing ivy.xml file.

In theory we could use a similar approach also for each
DependencyDescriptor; however, these are much simpler in
structure.