tuple assignment: allow some components to be left empty
add "tuple var declarations"

This is a way of declaring multiple variables and assigning
them to the entries of a tuple. The types can be inferred from
the tuple's type or be specified on the individual variables.
variables declared in tuple declarations are always initialized
fix scoping for TupleVarDeclarations