concrete functor and monad transformers

#71Quantified Constraint in Instance Head

I think it makes sense to have a quantified constraint (forall m. Monad m => Monad (t m)) in the instance head of MonadTrans. I have tested this change and the one breaking change is that ExceptT e is only a MonadTrans for e with an error constraint. I have it on a branch on my account. I guess you'd probably want to do some CPP to make it not affect previous versions.