Introduce a checksum file cache service This service is responsible for caching the checksums computed from local file system. Because it's also used for dependency verification writing and checking, this cache uses the existing infrastructure which makes sure that if a file is updated locally, we expire the entry in the cache.
This is done because there are lots of places in the code where we used the legacy `HashUtil` class, which has no caching whatsoever. It's, however, quite common to have a build which generates sha1 checksums multiple times for the same file. For example, during publication.
Track composition of Maven module metadata The binary representation of a Maven POM was only tracking the POM file itself as the source. However, a POM can reference parent POMs which also participate in resolution. This commit changes the `ModuleSources` so that we can query more than one module source of a specific type, allowing us to store more than a single module source for a single file.