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/io_k8s_kubernetes.patch b/third_party/go/io_k8s_kubernetes.patch
new file mode 100644
index 0000000..0755dba
--- /dev/null
+++ b/third_party/go/io_k8s_kubernetes.patch
@@ -0,0 +1,15 @@
+diff -ur io_k8s_kubernetes.orig/cmd/kubectl/BUILD.bazel io_k8s_kubernetes/cmd/kubectl/BUILD.bazel
+--- io_k8s_kubernetes.orig/cmd/kubectl/BUILD.bazel	2023-07-24 18:31:00.812244286 +0200
++++ io_k8s_kubernetes/cmd/kubectl/BUILD.bazel	2023-07-24 18:31:46.283984824 +0200
+@@ -1,4 +1,5 @@
+ load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
++load("@hscloud//third_party/go:kubernetes_version_def.bzl", "version_x_defs")
+ 
+ go_library(
+     name = "kubectl_lib",
+@@ -17,4 +18,5 @@
+     name = "kubectl",
+     embed = [":kubectl_lib"],
+     visibility = ["//visibility:public"],
++    x_defs = version_x_defs(),
+ )