Tuple values

Also reworked the grammar so that types and values are differentiated, and so that subcases of expression can be differentiated.
A more elegant solution I was considering here was this: A tuple comprised of only `TypeValue`s was, in turn a `TupleTypeValue`. That frees us from having to declare types as language keywords. I understand if you don't want that for this demo, though.