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.
I'm also open to feedback on "sequence" - it's nice to have this in the trait since Future has an efficient override (Future.collect).  Is Seq the right type?  Traversable?