Replace `MGuard` with `MFail`

Closed Adam requested to merge adamAndMath/stdpp:adamAndMath/mfail into master

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.

Merge request reports