Use monad-control instead of MonadCatchIO, and transformers than mtl

MonadCatchIO is irredeemably broken, which monad-control was created to remedy.  Also, mtl is a superset of the behavior of transformers, and none of mtl's actual behavior is being used in this module.

Pinging @snoyberg, who suggested the change