Change file collection `visitLeafCollections()` so that visitor receives a 'source' object, instead of an enum, in order to make the decision whether to visit a child collection or not. Use this in dependency resolution to remove some special-casing for local dependency files.
Rework visiting a `Configuration` so that its contents are treated as a sequence of collections, rather than a single monolithic collection of files. This will allow visitors such as continuous build or instant execution some finer-grained visibility into the contents of the `Configuration`. In this commit, the collections do not carry any useful information and the granularity is per artifact, which is too fine-grained. Later commits will address this.