Use DataMigration subclass

This makes it easier to determine whether a migration is a standard migration or a data migration, which is necessary if different behaviour is desired for each.