Replace EitherT with ExceptT from mtl, drop dependency on either package...

As far as I can tell, the `ExceptT` transformer in `mtl` does the same thing `EitherT` does (modulo not having a nice name for the hoist function).

The motivation here is that a dependency on the `either` package brings in a whole load of transitive deps, whereas we already have `mtl`.