Add infrastructure for pre-compiling Python wheels

This patch makes it so `rules_python` uses our FRC971 mirror for
downloading wheels instead of reaching out to pypi.org. This also
means that `rules_python` will not build a wheel from scratch.

Instead, we now have a new script that will build wheels in as
reproducible a way as possible and then upload them to our internal
mirror.

Run with:

    $ bazel run //tools/python:mirror_pip_packages --config=k8_upstream_python -- --ssh_host software

This patch does not move the entire repo to use this new setup yet. I
still need to take inventory of all the pip packages we need.

Buildkite will enforce that wheels are uploaded and available on our
mirror for all pip dependencies.

Signed-off-by: Philipp Schrader <philipp.schrader@gmail.com>
Change-Id: I12a1a29026a13211ea279b5567ed70529f0c66b5
diff --git a/tools/python/BUILD b/tools/python/BUILD
index 37101f5..1fa7a55 100644
--- a/tools/python/BUILD
+++ b/tools/python/BUILD
@@ -75,3 +75,12 @@
     toolchain = ":upstream_py_runtime",
     toolchain_type = "@rules_python//python:toolchain_type",
 )
+
+py_binary(
+    name = "mirror_pip_packages",
+    srcs = ["mirror_pip_packages.py"],
+    deps = [
+        "@pip//pkginfo",
+        "@pip//requests",
+    ],
+)