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.
Gradle module metadata: forbid no version at all With this change, it becomes illegal to create a Gradle Module Metadata file that has depedencies or constraints declared without any version at all across all variants.