Replace `MGuard` with `MFail`
This MR implements MFail as described in #171. This replaces mguard
with guard : P → {Decision P} → M P
using mfail
. As such I've replaced guard P; mx
with _ ← guard P; mx
in all lemmas. This MR further more replaces case_option_guard
with a more general case_guard
.
These changes are very much breaking changes.