Tuple typed reductions
Summary:
- Change the reduction library so that reductions can accept and return tuples. The argument to a tuple-typed reduction expression may be a tuple of expressions, a tuple typed reduction, or a tuple typed function call/substitution rule invocation.
- Remove the inames parameter from reduction library argext functions in favor of having the array index be a tuple parameter.
- Fix reduction lowering handling of tuple typed reductions.