I think we'd rather like to avoid UndecidableInstances in the prelude!
This does bring up an interesting idea, though, as far as using a flat hierarchy for these classes. Default method signatures could be used to provide similar behavior.
http://www.haskell.org/ghc/docs/7.4.2/html/users_guide/type-class-extensions.html#class-default-signatures
I'm not saying that this is a good idea (I think that a good idea would be closer to my https://github.com/mgsloan/instance-templates proposal - which I seriously need to rework to be more appealing), but I wonder if this would work:
class Applicative f where
applicative_map :: (a -> b) -> f a -> f b
default applicative_map :: Monad f => (a -> b) -> f a -> f b
applicative_map = monad_map
-- ...
class Monad m where
monad_map :: (a -> b) -> m a -> m b
default monad_map :: Applicative m => (a -> b) -> m a -> m b
monad_map = applicative_map
-- ...