third_party/go: fix `go mod tidy`

This makes our root repository somewhat more gomod-compliant, to the
point where we can run `go mod tidy` to manage dependencies.

The generated placeholder files turn their parent paths into enough of a
Go package that the go tooling is appeased, but they are ignored by
Gazelle.

Ideally, we will generate these placeholders automatically before
running `go mod tidy` and gitignore them, but this will do as a first
pass.

We also remove some unused dependencies which got caught by `go mod
tidy`.

Change-Id: I81e7e92a45f22c8ef9c92207f67a5bd6cc773da5
Reviewed-on: https://review.monogon.dev/c/monogon/+/652
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Reviewed-by: Leopold Schabel <leo@nexantic.com>
diff --git a/third_party/go/README.md b/third_party/go/README.md
index 05737ec..dc7d7ca 100644
--- a/third_party/go/README.md
+++ b/third_party/go/README.md
@@ -36,7 +36,7 @@
     $ go mod tidy
     $ bazel run //:gazelle-update-repos
 
-NOTE: currently the first part (`go mod tidy`) doesn't work without performing some in-place symlinking in the repository. TODO(lorenz): document this
+All generated sources (eg. protobuf stubs) that are usually built by Bazel are invisible to go(mod)-based tooling. To get around this, we place `gomod-generated-placeholder.go` files in package directories that would otherwise contain generated files. These are ignored by Gazelle (and thus by Bazel builds) but not by go(mod)-based tooling.
 
 Regenerating BUILDfiles
 -----------------------