Allow older version of mtl for Haskell Platform compatibility

Since `mtl-2.1.3` is bundled with the Haskell Platform, HP users can't (easily) install `hxt` at the moment. I reduced the lower version bound of `mtl` and used `cabal` macros where needed to ensure that deprecation errors related to `Control.Monad.Error` aren't generated if a recent version of `mtl` is being used.