added column metadata to make the sql backend more interoperable with
other backends
also opens the opportunity for more optimizations and checks (like
prohibiting null values for nonnull columns)
#471 Add type checks
Remove precondition checks
Unify column creation code
Merge branch 'master' into sql-column-meta
Merge branch 'master' into sql-column-meta
Integrate ColumnMetadata handling into code generation
Update RelationalPathBase subclasses and tests