Change the implementation of `ConfigurableFileCollection.finalizeValue()` so that only the locations are finalized, not the set of files. For example, when a collection contains a `FileTree` that is backed by a directory, then changes to the directory are reflected in the contents of the collection. In this way, a finalized file collection is basically a finalized set of file system roots, not a finalized set of files.
Add `ConfigurableFileCollection.finalizeValue()` to allow the value of the file collection to be finalized. The initial implementation is too eager, in that it calculates all of the files of the collection. Instead, it should calculate and finalize all of the roots of the collection. Later commits will improve this.