Code to define modeltype RM-2380

create a modeltype table used by models and pfts. The table is
initialized with the types already in the models (not pfts). All models
and pfts are associated with a modeltype next.
User can add/edit modeltypes and see the pfts/models associated with it.
See if you think this is worth worrying about: 

modeltype_id could end up being NULL if pfts.model_type doesn't match any of the modeltype names.  This won't happen with what's currently in the ebi_production database and in general shouldn't happen in any database where the models and pfts tables were populated via the BetyDB web interface.  But if it _does_ happen, the Pfts index table breaks because it refers to pft.modeltype.name and we'll have a case where pft.modeltype is nil.

Since you have provided for a model type 'UNKNOWN' (assuming that at least one of the existing models had either a NULL or empty-string model_type column value), I see no reason not to require the new modeltype_id columns in both the models and the pfts tables to be non-NULL.  Probably these should have a foreign key constraint as well, but to do that you'd either have to use `execute` or add the `foreigner` gem or something similar.

If you do add these constraints, then if there did happen to be a bogus model type name in the pfts table, the migration would fail, which is perhaps what should happen.  Or, you could have your migration accommodate this case by setting unfound pft model type names to 'UNKNOWN' before setting the modeltype_id column value.  (This assumes the 'UNKNOWN' modeltype does get inserted.)

We could just not worry about this now and wait until we get serious about adding database constraints.  But it would be good to at least keep track of constraints that we are sure we will want.