Make hash_to_/validate_ model take a config

This is done to make it easier to break these out of the module and to support editable settings, both of which are easier when not readign a global variable.
Break up data transformation tools into new module
Move migration rules to their own module
Give function better, simpler name
DRY out mgmt command option creation
wip. User and plot seem to work.
Decouple and rename validate_model

validate_model is now validate_model_dict and can be called separately from hash_to_model for more flexibility.
Fixup big refactor
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.