Monadic wrapper

Fixed the `Applicative` and `Alternative` instances, and now `MonadPlus` doesn't have a `MonadPlus` constraint on `m`.