go: re-do the entire thing

This is a mega-change, but attempting to split this up further is
probably not worth the effort.

Summary:

1. Bump up bazel, rules_go, and others.
2. Switch to new go target naming (bye bye go_default_library)
3. Move go deps to go.mod/go.sum, use make gazelle generate from that
4. Bump up Python deps a bit

And also whatever was required to actually get things to work - loads of
small useless changes.

Tested to work on NixOS and Ubuntu 20.04:

   $ bazel build //...
   $ bazel test //...

Change-Id: I8364bdaa1406b9ae4d0385a6b607f3e7989f98a9
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1583
Reviewed-by: q3k <q3k@hackerspace.pl>
diff --git a/third_party/go/kubernetes_version_def.bzl b/third_party/go/kubernetes_version_def.bzl
new file mode 100644
index 0000000..9a62a84
--- /dev/null
+++ b/third_party/go/kubernetes_version_def.bzl
@@ -0,0 +1,39 @@
+#  Copyright 2020 The Monogon Project Authors.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+# This reimplements k8s.io/kubernetes-compatible version_x_defs, while namespacing
+# stamp variables with KUBERNETES_*.
+# The generated build defs then are defines by the workspace status script, see
+# //build/print-workspace-status.sh.
+
+def version_x_defs():
+    stamp_pkgs = [
+        "k8s.io/component-base/version",
+        "k8s.io/client-go/pkg/version",
+    ]
+
+    stable_stamp_vars = [
+        "gitMajor",
+        "gitMinor",
+        "gitCommit",
+        "gitVersion",
+    ]
+
+    x_defs = {}
+    for pkg in stamp_pkgs:
+        for var in stable_stamp_vars:
+            x_defs["%s.%s" % (pkg, var)] = "{STABLE_KUBERNETES_%s}" % var
+    return x_defs