Tuple values

Also reworked the grammar so that types and values are differentiated, and so that subcases of expression can be differentiated.
This is much better! The only thing I might change is adding some name consistency here with the actual expression classes. ie, rename this one to `visitVariableAssignmentExpression`