Made user-defined columns always optional.
Added back required field annotations on subtypes now that it does not cause an issue.
Removed the ability of the SchemaUpdater to drop unknown columns.
Removed excessive nested try/catch blocks.
Centralised some SQL building logic.