Tuple values

Also reworked the grammar so that types and values are differentiated, and so that subcases of expression can be differentiated.
Can you please explain a case where we want that, Murphy? As a simple example, I would expect `(Dumptruck)` to be a subtype of `(Truck)` but not vice versa.