Add support for the Rust toolchain

To enable Rust build targets in standalone dawn:
- Add `checkout_rust: True` to the gclient `custom_vars` section. As
  it defaults to false:
    "custom_vars": {
      "checkout_rust": True,
    }
- Set `enable_rust = true` in GN args, as it also defaults to false.
- Run gclient sync

Then building `rust_build_tests` will build test targets in
//build/rust/tests, which rely on and verify the functioning of
the Rust toolchain.

Make new rust targets by using the GN templates in //build/rust.

In the chromium build, Rust build targets that use the templates
from //build/rust will just work.

------

Dependent steps that are already done:
1) The //tools/rust repo needs to be created in
   https://bugs.chromium.org/p/chromium/issues/detail?id=1494128
2) Then, we should remove the checkout_tools_rust DEPS var,
3) And update the tools/clang and tools/rust revisions so that they
   are compatible.
4) Roll the chromium //build changes that were required in from
   https://chromium-review.googlesource.com/c/chromium/src/+/4956874
   and
   https://chromium-review.googlesource.com/c/chromium/src/+/4966201
5) The clang roll causes clang-cl to warn on use of offsetof, but it
   does not define __GNUC__, which is used to remove the warning. So
   also remove the warning when __clang__ is defined.

Bug: chromium:1494118
Change-Id: I5e280090ec950a1da9f91e2e4717925ce4b2eaa6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/157120
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: danakj <danakj@chromium.org>
diff --git a/.gitignore b/.gitignore
index 80941cc..b268054 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,6 +36,7 @@
 /third_party/node-api-headers
 /third_party/partition_alloc
 /third_party/protobuf
+/third_party/rust-toolchain
 /third_party/swiftshader
 /third_party/vulkan-deps
 /third_party/vulkan_memory_allocator
@@ -45,6 +46,7 @@
 /tools/cmake*
 /tools/golang
 /tools/memory
+/tools/rust
 /out
 
 # Tint test validation cache file