Improve cache restore process to check for other recent caches if explicit match isn't found

Description of the feature request

Using the 'file-content-hash` method, the cache restore process is all or nothing. It should be improved to check for other, similar, caches in the event an explicit match isn’t found. This would be similar to how CircleCI restores caches.

CircleCI’s documentation for restoring cache is here:

The overarching idea is that if a single dependency changes, then my lock file changes. As a result, with the current system, this triggers a full reinstall of dependencies. Instead, the cache restore step should check for other recent caches and use that instead. This causes the subsequent dependency install step to only need to update a handful of packages.