concrete functor and monad transformers

#70Generalise ContT type sigantures to Applicative

If we write evalContT m = runContT m pure then the type signature can become more general: evalContT :: Applicative m => ContT r m r -> m r. Subsequently shiftT can have its constraint weakened to Applicative m.