* Support go workspaces when detecting the go version.
When a module is part of a workspace, a call to `go list -m` lists all
modules in the workspace, and we need to parse multiple modinfos.
* Do not invoke `go list` for every package.
* Add a go language version override config option for golangci-lint.
* Add support for the new behaviour of for loops in go 1.22.
Go 1.22 has changed the behaviour of for loops. Every iteration
makes new loop variables. It is now safe to take their addresses
because they are guaranteed to be unique. Similarly, it is now
safe to capture loop variables in functions.
* adds documentation for public function
---------
Co-authored-by: chavacava <salvadorcavadini+github@gmail.com>