Optimize Go module queries
This is a followup to !29642 (closed), to reduce the scope of that MR.
Packages::Go::ModuleFinder
and Packages::Go::VersionFinder
are inefficient. To improve the performance of Go features, the following should happen:
- Use a shared cache so the results of previous queries can be reused in subsequent queries.
- Check if corresponding Packages exist and skip Gitaly queries if that is the case.
- Implement another method of caching, especially for cases where a Go module/version is not valid, since Packages can only be used to optimize cases when a Go module/version is valid.