Use separate cache for file access time journal Storing a file access time journal inside each cache causes a lot of contention in particular with caches that require a lot of exclusive access like the artifact cache.
Instead, a new `journal-1` cache that is managed by a user-home-scoped service is now used to keep track of file access times for all caches that want to use it.
Enable incremental cache cleanup Instead of computing the complete list of eligible files at once, SingleDepthFileFinder now returns an Iterable that creates an Iterator that will incrementally walk the file tree.
In addition, the CleanupAction.clean() operation now takes a CountdownTimer and implementations periodically check whether the timer has expired. If so, the current cleanup will be aborted. DefaultPersistentDirectoryCache now uses a timeout of 20 seconds which is well below the file locking timeout of 60 seconds.
The marker file (gc.properties) will only be updated if the complete cleanup was able to finish without expiring the timeout.