Add Applicative and Functor as superclasses of Monad

The choice of Applicative methods is probably the most controversial part of this PR (if it is at all).

I think I maintain source compatibility for everything Monad.scala.
That could be a good name for it, one that at least doesn't confuse people expecting Monad.join (M[M[X]] => M[X]).  However, this operation for Seq produces a Cartesian product, not a zip (if you're using the instance that corresponds to the normal Seq monad):

$ ghci
Prelude> import Control.Applicative
Prelude Control.Applicative> (,) <$> [1,2,3] <*> [4,5,6]
[(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)]

I can't find a common name for this, since it's idiomatic only in Scala. (Haskell uses <*> as the second operation, which works well with its syntax.)  scalaz uses apply2, which isn't that friendly.  ScalaCheck uses map2.