[SDK] Go collection uses copy remote block to local keepstore
Go SDK Collection uses "refresh keep signature" API (#14199) to convert +R token signatures into +A signatures.
Only supports copying block from remote clusters to home cluster. Only supports creating collections on the local cluster.
The Go keep client needs a new method to access the "refresh keep signature" API.
The Collection will check if there are any locators with remote signatures (+R) and uses the refresh keep signature API before creating / updating a collection on the home cluster.
Make sure that crunch-run uses this when copying inputs to outputs (eg when a collection is mounted within the output directory).
Caching in LocalLocator itself has more potential, but might be hard to get right (the caller might change the client's token between calls, the cache might need to be purged in case the client is long-lived, etc). So I did it in sync() to take care of the most common case, where a block is referenced by many files and the files are all in the same directory.
14406-remote-data-in-output @ b8035155b7db4b7ed11babde71e7d82c3d09fa6d