Sanitize the op-program for non-determinsm
Related to https://github.com/orgs/ethereum-optimism/projects/76/views/1?pane=issue&itemId=70514271.
Detect uses of go keyword or goroutine usage from mutator code in the block building code path. This lets us detect non-deterministic preimage lookups early (see https://github.com/ethereum-optimism/op-geth/pull/373) where native and cannon execution reference different sets of preimages.
I'm not sure if we can sanitize for go statically, but one way to do this is to run a program via cannon while looking for runtime.newproc related calls by the Go runtime.
Let's spike out how this would work statically. Alternatively, we can add periodic e2e tests on fuller blocks to detect non-determinism in the block building path.