Output: Use throwError from Control.Monad.Except

Update 'Idris/Output.hs' to use 'throwError' from 'Control.Monad.Except'
rather than from 'Control.Monad.Error', which causes the build to fail
with a default setup:

  src/Idris/Output.hs:18:1: Warning:
      Module ‘Control.Monad.Error’ is deprecated:
        Use Control.Monad.Except instead

  <no location info>:
  Failing due to -Werror.

With this patch it should build fine.

This requires mtl >= 2.2.1, so add this to the cabal file.

Signed-off-by: Alexander Berntsen <alexander@plaimi.net>
Merge pull request #1749 from alexander-b/fix-build

Output: Use throwError from Control.Monad.Except
Implemented @-patterns

By popular request. Fixes #1706.

It's not the most efficient desugaring, merely translating the @s on the
left to lets on the right, so the case tree builder won't be aware of
it. Still, it provides the notation and it works nicely with showing
what is in scope and what is available in the prover and so on.