Don't use Monad instance of transformed monad if not necessary.

Hi, it would be nice if `(<*>)` would only use `(<*>)` of the underlying `Applicative` / `Monad`. Although the result should be the same, `(<*>)` sometimes has different performance characteristics, for example in [haxl](http://hackage.haskell.org/package/haxl).