Remove the MonadFail P instance
There were two issues with this instance:
-
its existence meant that a pattern match failure in the
P
monad would produce a user-visible parse error, but the error message would not be helpful to the user -
due to the MFP migration strategy, we had to use CPP in
Lexer.x
, and that created issues for #17750