use ExceptT

In mtl-2.2 `ErrorT` and `Error` are deprecated. see: https://hackage.haskell.org/package/mtl-2.2.1/docs/Control-Monad-Error.html
> Deprecated: Use Control.Monad.Except instead

So, it replaces:
* `ErrorT` -> `ExceptT`
* `mapErrorT` -> `mapExceptT`

And it is breaking changes.
```c
#if MIN_VERSION_transformers(0,4,0)
```
Using above macro makes be able to compile under `transformers < 0.4.0` environment.