Using `rstest` to create side-by-side testing of `rv32im-v1` and
`rv32im-v2` executors.
Notes:
* Image IDs are a bit different in v2. This is because there is now a
user-mode and kernel-mode portion of the initial memory image. At build
time, the `user_id` or `kernel_id` is computed (based on a
`package.metadata.risc0.kernel` config setting). At runtime, when the
user goes to run an image, they can compute the full `image_id` by
combining these two IDs.
* `risc0-build` has been bumped to `2.0.0` to deal with these new
changes.
* A `v1compat` kernel is added that provides emulation for the v1
host/guest syscall interface. This kernel needs to be built and used by
`risc0-zkvm`, so a new `cargo risczero bake` command is added to support
this. The `bake` command will build a guest binary ELF and compute the
user or kernel ID, then output the result into a source directory.
* The v2 circuit now includes the `pc` as part of the memory image.
However, `ReceiptClaim` uses `SystemState`, and so currently the `pc` is
always set to `0` for compatibility. In the future we can see about
changing this.