decodeEither' for more useful exceptions #26