Refactor otm1 migrator

Create MigrateException for better error reporting.
Move command_line_flag to MIGRATION_RULES so that option building section can be more DRY and data is grouped together in context.
Fix import_event and otm_code MIGRATION_RULES to match test data
Replace more_permissions with save_with_user_unsafe, the newly supported feature of the audit system.
Break up giant hashes_to_models function to take a lambda for saving models of a given type, provide those functions.
Break up various functions to be more readable.
Decouple and rename validate_model

validate_model is now validate_model_dict and can be called separately from hash_to_model for more flexibility.
Change field generation logic in save_species

Rather than write otm_code into the model_hash and then send it to hash_to_model, get the model from hash_to_model and then set otm_code directly on the model before saving.