base: Add new Control.Monad.Fail module (re #10751)

Authored by hvr.


base: Add new Control.Monad.Fail module (re Trac #10751)

This is based on David's initial patch augmented by more extensive
Haddock comments.

This has been broken out of D1248 to reduce its size
by splitting the patch into smaller logical pieces.

On its own, this new module does nothing interesting yet.
Later patches will add support for a different desugaring of
do-blocks, at which point the new MonadFail class will
become more useful.

Reviewed By: ekmett, austin

Differential Revision: