Require commas in vectors. Add tuples.

A tuple is represented with a pair type, as a cons cell in a
heterogeneous linked list terminated by a unit type '()'.
Tuples are polymorphic in the tail; this allows, e.g.,
'second' to work on any tuple with at least two elements.

A comma is required in order to disambiguate a parenthesized
type '(a)' from a singleton tuple type '(a,)'.

Closes #31