Introduced ModelTypeBase

Cleaner way to let the rest of the world work with ModelTypes, without
needing ModelTypeDefiner and without the artificial getModelTypeInfo.