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/BUILD b/BUILD
index fe75de7..69fd218 100644
--- a/BUILD
+++ b/BUILD
@@ -2,15 +2,24 @@
 load("@bazel_gazelle//:def.bzl", "gazelle")
 
 # Used by //go/workspace tests.
-exports_files(["WORKSPACE", "default.nix"])
+exports_files([
+    "WORKSPACE",
+    "default.nix",
+])
 
 # gazelle:prefix code.hackerspace.pl/hscloud
-# gazelle:go_naming_convention go_default_library
+# gazelle:go_naming_convention import
+# gazelle:exclude **/gomod-generated-placeholder.go
+gazelle(name = "gazelle")
+
 gazelle(
-    name = "gazelle",
+    name = "gazelle-update-repos",
     args = [
+        "-from_file=go.mod",
         "-to_macro=third_party/go/repositories.bzl%go_repositories",
+        "-prune",
     ],
+    command = "update-repos",
 )
 
 config_setting(