Implement a minimal, internal, experimental rust_proto_library rule.

The internal design is consistent with other <lang>_proto_library rules. rust_proto_library attaches rust_proto_library_aspect on its `deps` attribute. The aspect traverses the dependency, and when it visits proto_library (detected by ProtoInfo provider) it registers 2 actions:

1) to run protoc with Rust backend to emit gencode
2) to compile the gencode using Rustc

Action (2) gets the Rust proto runtime as an input as well.

Coming in a followup is support and test coverage for proto_library.deps.

PiperOrigin-RevId: 514521285
diff --git a/WORKSPACE b/WORKSPACE
index 2301093..af7d63a 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -136,4 +136,4 @@
 
 load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains")
 rules_rust_dependencies()
-rust_register_toolchains()
+rust_register_toolchains(edition = "2021")