Use ExceptT instead of ErrorT

Since `Control.Monad.Trans.ErrorT` is is deprecated, switch to using `Control.Monad.Trans.ExceptT`. Addresses https://github.com/idris-lang/Idris-dev/issues/1780. Some changes made in the process:

* Remove the `TC' e a` definition which is polymorphic in the error type, replacing it with `TC a` (with the error having type `Err`) as that is how `TC'` was exclusively used previously.
* Move Applicative and Monad instances for `TC` from `Idris.Core.TC` to `Idris.Core.TT`, since we really need to have access to the `InternalMsg` constructor to give `TC` a proper `fail` instance. I just ended up removing the whole `Idris.Core.TC` module, moving the code to `Idris.Core.TT`.
* Add a `MonadException m => MonadException (ExceptT Err m)` instance to `Idris.Output`, at least until Haskeline adds this input itself.