@Kha: the motivations are
- Code is more uniform, and make sure we are using only `ReaderT` and
`StateRefT` on top of our basic monads.
- It is easier to support variants of `monadMap`. We don't need to
explain the system how these variants behave with `OptionT`.