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.

Qualifiers (or rather, qualifier sections of a schema) are now also given names by the application author and form a map under their family.  Since these qualifier schemas now have names, `version_column` attributes refer to them by name rather than by their `qualifier_type`.

Qualifiers identified by a `version_column` are now required to have a constant `qualifier_type`, a constraint I simply forgot the first time.

`Type.names` is a function that returns all the `NamedType` labels mentioned within a type (name.) 

For each qualifier schema, the `NamedType` labels in its `value_type`, `qualifier_type` and owning relation's `row_key_type` are required to be distinct.  For example, if the row key type mentions `id` (as in `{id: bytes}`), then no qualifiers in that relation may use `id` in their `qualifier_type` or `value_type`.  This way the meaning of `id` is unambiguous (so long as we have a specific relation and qualifier schema in mind.)