Lookup table behaviour.
SelectionWidget: base widget class that can pull data from a lookup table.
Add beginInternalTransaction() method to simplify BaseActiveRecordVersioned.
Migration method to version existing table.
Strip foreign keys from version tables and don't use soft deletion everywhere.
Remove SoftDelete and apply LookupTable behaviour where appropriate.