Monad transformers from Traverse

Tests compile without change, which is probably a good sign.

It is possible to port over even more monad transformers of kind `(*->*)->*->*` (`LazyOptionT`, ...). For other kinds (e.g. `(*->*)->*->*->*`) it is necessary to add more boilerplate.

Original contribution by @tixxit.