Don't Save trees and plots marked present=False

The flow of data through the migrator has changed a little bit with this
commit. Now, dict_to_model is called outside of the individual
model_save_fn functions, so that it can bail without a save
happening. This behavior needs to happen for all models, so it has been
lifted up a level.

dict_to_model now has two ways it can bail out early
1) if the provided model rule does not have an accompanying class (for
models that we don't actually save, just process, like UserProfile)
2) If the list of record_mutators ever returns None. record_mutators can
now support validation failures because if they return none, it stops
the save process and skips the record.