workspace: add Rust EFI infrastructure

This bumps rules_rust, cleans up the toolchains with the new version.
It also adds the Prost codegen to "normal" crate set as well as a new
crate set specific to EFI. This is separate because of Rust no-std's
dependence on create feature tags.

Change-Id: Ie76e66ee83696948391420ca3b011a3a71258690
Reviewed-on: https://review.monogon.dev/c/monogon/+/2202
Tested-by: Jenkins CI
Reviewed-by: Serge Bazanski <serge@monogon.tech>
diff --git a/third_party/rust/cargo/remote/BUILD.backtrace-0.3.69.bazel b/third_party/rust/cargo/remote/BUILD.backtrace-0.3.69.bazel
new file mode 100644
index 0000000..43d0e4f
--- /dev/null
+++ b/third_party/rust/cargo/remote/BUILD.backtrace-0.3.69.bazel
@@ -0,0 +1,119 @@
+"""
+@generated
+cargo-raze crate build file.
+
+DO NOT EDIT! Replaced on runs of cargo-raze
+"""
+
+# buildifier: disable=load
+load("@bazel_skylib//lib:selects.bzl", "selects")
+
+# buildifier: disable=load
+load(
+    "@rules_rust//rust:defs.bzl",
+    "rust_binary",
+    "rust_library",
+    "rust_proc_macro",
+    "rust_test",
+)
+
+package(default_visibility = [
+    # Public for visibility by "@raze__crate__version//" targets.
+    #
+    # Prefer access through "//third_party/rust/cargo", which limits external
+    # visibility to explicit Cargo.toml dependencies.
+    "//visibility:public",
+])
+
+licenses([
+    "notice",  # MIT from expression "MIT OR Apache-2.0"
+])
+
+# Generated Targets
+# buildifier: disable=out-of-order-load
+# buildifier: disable=load-on-top
+load(
+    "@rules_rust//cargo:cargo_build_script.bzl",
+    "cargo_build_script",
+)
+
+cargo_build_script(
+    name = "backtrace_build_script",
+    srcs = glob(["**/*.rs"]),
+    build_script_env = {
+    },
+    crate_root = "build.rs",
+    data = glob(["**"]),
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-raze",
+        "manual",
+    ],
+    version = "0.3.69",
+    visibility = ["//visibility:private"],
+    deps = [
+        "@raze__cc__1_0_83//:cc",
+    ] + selects.with_or({
+        (
+            "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
+        ): [
+        ],
+        "//conditions:default": [],
+    }),
+)
+
+# Unsupported target "benchmarks" with type "bench" omitted
+
+# Unsupported target "backtrace" with type "example" omitted
+
+# Unsupported target "raw" with type "example" omitted
+
+rust_library(
+    name = "backtrace",
+    srcs = glob(["**/*.rs"]),
+    aliases = {
+    },
+    crate_root = "src/lib.rs",
+    data = [],
+    edition = "2018",
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-raze",
+        "crate-name=backtrace",
+        "manual",
+    ],
+    version = "0.3.69",
+    # buildifier: leave-alone
+    deps = [
+        ":backtrace_build_script",
+        "@raze__cfg_if__1_0_0//:cfg_if",
+        "@raze__rustc_demangle__0_1_23//:rustc_demangle",
+    ] + selects.with_or({
+        (
+            "@rules_rust//rust/platform:x86_64-unknown-linux-gnu",
+        ): [
+            "@raze__addr2line__0_21_0//:addr2line",
+            "@raze__libc__0_2_148//:libc",
+            "@raze__miniz_oxide__0_7_1//:miniz_oxide",
+            "@raze__object__0_32_1//:object",
+        ],
+        "//conditions:default": [],
+    }),
+)
+
+# Unsupported target "accuracy" with type "test" omitted
+
+# Unsupported target "concurrent-panics" with type "test" omitted
+
+# Unsupported target "current-exe-mismatch" with type "test" omitted
+
+# Unsupported target "long_fn_name" with type "test" omitted
+
+# Unsupported target "skip_inner_frames" with type "test" omitted
+
+# Unsupported target "smoke" with type "test" omitted