Tuple values

Also reworked the grammar so that types and values are differentiated, and so that subcases of expression can be differentiated.
Should the values here be checked against the expected types of the provided TupleTypeValue?