Implement client-side retries in Gitaly's Go client
Gitaly's Go client currently has no logic to retry requests. This can return errors to users unnecessarily if there is a transient error that a retry could avoid. As part of &8971 (closed), we should retry failed requests, ideally on another host. The implementation would likely just extend the output of #4529 (closed).