Switch all uses of `unsafe_guid!` + `derive(Protocol)` to using
`unsafe_protocol!`.
Also update the docstrings for the `Identify` and `Protocol` traits.
This is a rewrite of the Python build.py code in Rust. See
https://github.com/matklad/cargo-xtask for details of the xtask
pattern. Essentially it's a pattern for extending cargo with
project-specific commands. Using Rust gives all the usual benefits of
checking stuff at compile time, thorough error handling, ease of
testing, etc. It is more verbose though, so the LOC goes up a bit.
* Removed `build-std` settings from `.cargo/config` because we want to
run `xtask` with the default compiler config. The various `cargo
xtask` commands handle adding the build-std args where needed. This
has the side effect of obsoleting the
`uefi-macros/tests/cargo_wrapper` hack.
* The build subcommand now builds the whole workspace (except for xtask,
since that implicitly has already been built). So no separate CI step
to test that the `tmplate` package builds is needed.
* Dropped the `--verbose` option, just always print the commands being
run since it's helpful info.
* Looked like there was some vestigial timeout code for the VM test but
no timeout was set that I could see; added a timeout to the github
workflow yaml instead.
build.py isn't really specific to uefi-test-runner; it has commands for
generating docs, running clippy, and running tests. Move it to the root
of the repo to reflect its broader role.
Updated various docs that reference build.py.