Promote schema version to a top-level entity.

All aspects of an application except its name and schema file format
have been extracted to a new `VersionSchema` type.  Applications are
now lists of versions.

In addition to the name and format, they provide a current version
number which must match a declared version.

By tracking past (or future) versions this way, it's possible to infer
the types of rows defined by versions other than the current one.