Split Applicative' into Applicative' and Pure. Added join to Monad'.

Split Pure off from Applicative': Pure now contains pure :: a -> f a and
Applicative' contains (<*>). This was done because pure referred only to
a subset of (<*>)'s type parameters, leading to ambiguities when using
pure.

Added join and (>>) to Monad'. Wrote filterM and updated the module
documentation.