This pass converts shape.cstr_* ops to eager (side-effecting)
error-handling code. After that conversion is done, the witnesses are
trivially satisfied and are replaced with shape.const_witness true.
We also throw in a targeted set of canonicalization patterns to clean up
trivial shape.assuming (we can add more as needed; we don't want users
of this pass to always have to run a full canonicalization after this