Phs/make schemas cumulative and uniquify type labels

Make schema versions a level of schema definition, just below application.  This lets applications inspect their own past structure, which will be useful for migrations.

Relations within a table now form a map (again) instead of a list.  The keys are arbitrary strings chosen by the application author; they merely must be unique within the version.

`Type.names` is a function that returns all the `NamedType` labels mentioned within a type (name.)  It is used to require such names to be unique within a relation.  With the change to relations, this makes it possible to unambiguously talk about a specific typed attribute knowing only its name and the name of the enclosing relation.