Add support for audit imports
Misc cleanups to otm1 migrator

Add comments and reorganize module

DRY out plot/species/tree imports

Simplify forloop with a generator Instead of having a continue statement

Move user_field_to_try logic into user save method

Make dependency rewriting cleaner and faster

Rename MODELS and cleanup lint
Merge pull request #1024 from steventlamb/topic/otm1_audit_imports

Topic/otm1 audit imports
reverting migration with duplicate number 0054
Add safety code in plotMarker.js
Add MapFeature model

* Superclass for Plot (and, in the future, RainBarrel etc.)
* Has feature_type field, so generic searches can just query MapFeature rather than Plot, RainBarrel, etc.

Make temporary fields
* Make an explicit "Plot.mapfeature_ptr" field for migrations to use (it will become implicit once Plot inherits from MapFeature)
* Make a temporary "Tree.mapfeature" field for migrations to use (it will become Tree.plot)

Migrations
* Create a MapFeature for every Plot
* Make Plots point to their MapFeature
* Make Trees point to their Plot's MapFeature
Switch Plot to use multi-table inheritance

Finalize Plot and Tree classes
* Plot inherits from MapFeature
* Delete Plot fields moved to MapFeature
* Tree.plot remains a foreign key to Plot, but (since Plot's primary key is its foreign key to MapFeature) its values
are pointers to MapFeature rather than to Plot

Fix subtle issues in audit.py:
* get_id_sequence_name (used for pending audits, to get the next primary key for a table) -- the primary key of the Plot table is its foreign key to MapFeature, so use that.
* validate_foreign_keys_exist (used to process pending inserts) -- if we're creating a Plot we don't expect there to be MapFeature yet, so don't validate that foreign key.
* save_with_user -- when we plug in the "reserved model id" (provided by get_id_sequence_name) to an object we're saving we must set the "id" field in addition to the "pk" field (for the "Plot" case, where pk != id)

Also:
* Migrate the triggers (which update the geo rev hash when a plot changes) to use the MapFeature table instead of the Plot table
* Update a few tests
Remove ImportEvent model