Tuple values

Also reworked the grammar so that types and values are differentiated, and so that subcases of expression can be differentiated.
I'm not sure exactly what use case you had in mind here, but a more useful API might be `Value getValue(int i, Scope scope)`