MultiLift class

MultiLift provides an mlift method that invokes the lift
method of MonadTrans multiple times, based on the requested
argument and result type. You will usually have to specify the
type of the argument explicitly.

Note that mlift only works with up to 9 levels of nested monad
transformer.