Move (=<<) to GHC.Base

This allows GHC.Stack to avoid importing Control.Monad, and
is preparatory work for implementing #9586

Reviewed By: austin

Differential Revision: https://phabricator.haskell.org/D221
Move `when` to GHC.Base

This allows several modules to avoid importing Control.Monad and thus break
import cycles that manifest themselves when implementing #9586

Reviewed By: austin, ekmett

Differential Revision: https://phabricator.haskell.org/D222
Move Applicative/MonadPlus into GHC.Base

This is necessary in order to invert the import-dependency between
Data.Foldable and Control.Monad (for addressing #9586)

This also updates the `binary` submodule to qualify a GHC.Base import

Reviewed By: austin

Differential Revision: https://phabricator.haskell.org/D223
Move Control.Monad.void into Data.Functor

Both modules still export `void`, but `void`'s implementation now lives in
Data.Functor where it actually belongs in (as it doesn't need a Monad context)

The desired side-effect of this is to invert the import-dep
between Control.Monad and Data.Functor.

Reviewed By: ekmett, austin

Differential Revision: https://phabricator.haskell.org/D224
Invert module-dep between Control.Monad and Data.Foldable

This is the last preparation needed before generalizing entities in
Control.Monad conflicting with those from Data.Foldable (re #9586)

Reviewed By: ekmett, austin

Differential Revision: https://phabricator.haskell.org/D225
Generalise Control.Monad.{sequence_,msum,mapM_,forM_}

This finally takes the gloves off, and performs the first actual
generalization in order to implement #9586. This re-exports the
respective definitions for the 4 combinators defined in Data.Foldable.

This way, importing Data.Foldable and Control.Monad unqualified won't bring
conflicting definitions of those 4 entities into scope anymore.

This change seems to have some minor effect on rule-firing, which
causes some wibble in the test-case T4007

Reviewed By: ekmett, austin

Differential Revision: https://phabricator.haskell.org/D226