Support 'aud' claim as either a single value or an array

The spec allows both.
Bump minimum mtl version

Needed for Control.Monad.Except.
Use MonadError to generalize from Either

Avoids repeated use of 'either throwError return' when running in
'ExceptT'.