Added `MonadError` instance.

> This requires a dependency on *mtl*.
> Defined `left`, `right` and `hoistEither` in terms of `MonadError`.

Inspired by [this SO question](http://stackoverflow.com/q/14428756/1333025), I realized that `MonadError` is the type class corresponding to `EitherT`. I wonder, why is the instance commented out? Is there a problem with the dependency on *mtl*? With this simple modification, it's possible to use `EitherT` inside a monad stack through `MonadError`.