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.
Merge pull request #1 from jwiegley/master

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