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.
Changed `Directory` and `RegularFile` so that they do not extend `Provider<File>` as these types represent some immutable location, rather than some calculated value. Also added `FileSystemLocation` as a common supertype for these types to allow a consumer to declare that they accept a directory or a file or any file system element.