Issue #971: Refactor CallBuilder so we can add arbitrary statements to the Let generated by CallBuilder.build(). This is to allow us generate a Let so that we only evaluate the primary of a spread argument f(*prim.args) once
CallBuilder: Avoid using a Let unless we really need to
Issue #971: Pass the CallBuilder deeper into the methods for transforming invocations, (this will be used in the next commit)
Issue #971: Change PositionalInvocation.getParameter() so we can use an parameter index, not just an argument index (previously we couldn't use an index>#arguments, we got AIOOBE)
Issue #971: Remove Invocation.validNumberOfParameters() since it's bogus now we can spread tuples
Issue #971: Invocation.isArgumentSpread() now depends only on the spreadability of the argument, not on the sequenced-ness of the parameter, since we can spread tuple arguments onto non-sequenced parameter lists
Issue #971: Actually implement spreading of tuple arguments in invocations
Issue #971: Test
Factor out argument transformations from ExpressionTransformer.transformArgumentsForSimpleInvocation() for each of the main cases
Issue #1008 and #1038: Support tuple and iterable spread in tuple construction. Complete rewrite of how we transform Tree.Tuple
AbstractTransformer: rename iterableToSequence() -> iterableToSequential(), let's not spread this 'sequence meaning Sequential' thing around, it's too confusing
Issue #1008 and #1038: Tests
Make SpreadArguments test also test for spread Iterable arguments
Add a toString() to ExpressionAndType to make life in the debugger just a smidgeon more pleasant
Issue #971: SimpleInvocation: Add getArgumentType() so we'll be able to spread positional arguments correctly depending on whether they'ew Tuple, Sequential, or Iterable
Issue #971: Refactor transformArgumentsForSimpleInvocation() so that spread Sequence/Sequential arguments get handled in the isArgumentSpread() branch (not the following branch, which was confusing). Also add support for spreading Iterable arguments now that we can figure out whether an argument is Iterable/Sequential/Tuple.
Issue #971: Improve SpreadArguments test, so we're testing for spread Iterator arguments
Issue #1008 and #1038: Fix .src now that we're generating Tuples with type arguments