Change file collection `visitLeafCollections()` so that visitor receives a 'source' object and `Iterable<File>` that describes a file collection, instead of a `FileCollection` instance.
Change visiting of the outputs of artifact transforms so that an empty collection is visited when its 'spec' is requested by the visitor. The 'source' object can be used to carry details about the output variant to the instant execution serializer.