Upgrade rust tooling

This is a combination of 2 commits and a merge that had to be made
into one to build successfully. Below is the each commit message.

======================

Merge commit '6b8c7d81975eefbe58bece57a9fa9d4665ca222a' into rules_rust

======================

Upgrade rules_rust to version 0.25.1

======================

Migrate rust dependencies to crate_universe.

We've been using cargo raze for managing rust dependencies,
however cargo-raze has some flaws and it's not being updated
(last commit on main was on Dec 2022). Meanwhile, crate_universe
ships with rules_rust which we already depend on.

crates_universe doesn't handle binary only dependencies, however
these are easy to add manually as explained here:
http://bazelbuild.github.io/rules_rust/crate_universe.html#binary-dependencies
We only depend on cxxbridge_cmd which I've added.

crates_universe didnd't allow for extra_aliased_targets which we use for
cxx (cxx_cc target). I've added that functionality and built a
cargo-bazel binary which has been deployed to our Build-Dependencies.

Crates now live in @crate_index//:[crate_name].

After adding a crate, you have to use
`CARGO_BAZEL_REPIN=1 bazel build //foo/bar` to have cargo generate the
new build files and the lock file. It will error if the manifest(s)
don't match the lock file.

If you want to update the lock file without building anything in
particular you can run
`CARGO_BAZEL_REPIN=1 bazel sync --only=crate_index`

Change-Id: Iaa47218e6012cf891c98a5c9340eeaa8b7e67c12
Signed-off-by: Adam Snaider <adsnaider@gmail.com>
diff --git a/tools/bazel b/tools/bazel
index 2bfebef..97f31d9 100755
--- a/tools/bazel
+++ b/tools/bazel
@@ -105,6 +105,10 @@
 ENVIRONMENT_VARIABLES+=(LANG="${LANG:-C}")
 ENVIRONMENT_VARIABLES+=(BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1)
 
+if [[ ! -z "${CARGO_BAZEL_REPIN+x}" ]]; then
+  ENVIRONMENT_VARIABLES+=(CARGO_BAZEL_REPIN="${CARGO_BAZEL_REPIN}")
+fi
+
 if [[ ! -z "${DISPLAY+x}" ]]; then
   ENVIRONMENT_VARIABLES+=(DISPLAY="${DISPLAY}")
 fi