Tuple values

Also reworked the grammar so that types and values are differentiated, and so that subcases of expression can be differentiated.
That grammar turns out to be ambiguous with respect to `TupleValue`s, because there's no way to tell the difference between a value and a type otherwise.