(WIP) trac-506: moving save/load functionality from Model to a Savable mixin
- added save_load.py module. It contains References class and Savable mixin.
  - also added gnome.persist.load() function in addition to the load
    method in Savable mixin
- added tests
minor cleanup
changed cats schema so it does not require uncertainty parameters
(WIP) trac-506
- Wind object writes out timeseries upon save() - no need for tempfile
  cleaned Wind object code a bit more
- made a general test for test_save_load for all gnome objects in
  test_save_load.py module. No need to write same code in all modules,
  but parametrize it to accept various gnome objects
  - consolidated all testdata info in a testdata() dict in conftest.
    test_save_load uses this to create objects passed in as parameters
- overloaded save/load methods for classes that need to modify the json_
  before saving to file, or after loading but before object creation
(WIP) trac-506
- changed to_dict() so it returns a dict of all the object's attributes
  defined by _state
- added to_serialize(json_=<'save', or 'webapi'>) which subselects the
  dict that is to be serialized depending on 'save' file or 'webapi'
- to_serialize adds the ['json_'] key to the dict -- simplified some of
  the logic when serializing nested objects
- updated deserialize() for nested objects to convert the dict to an
  object if json_ == 'save'
- changed output of 'spills' for 'save' files so is is consistent with
  'webapi'. This allows to_dict() to work the same way regardless of
  final serialization outcome:
    'spills': {ordereddict serialization of forecast spills}
    'uncertain_spills': {ordereddict serialization of uncertain spills
        only for 'save' files and only if uncertainty is on}
- commented InitMassFromVolume because if you have volume, you can compute
  and save the totalmass. Basically moved this computation back in teh
  Spill object. Remove it after code review.
- updated tests
- changed internal mass units to 'kg' in data_arrays .. updated
  weathering tests so it is unit independent, since this broke it.
updated schema so it does not require uncertainty parameters
Merge branch 'master' of https://trac.orr.noaa.gov/git/PyGnome
updated random movers schema
updated wind mover schema to not require uncertainty parameters
The drop object was being referenced, but not imported,
causing run-time exceptions.
Completed trac-506 so save/load is available for all objects
- added a test so an empty model can be loaded up
  - need tests for other objects with missing attributes (ie for location
    files)
Merge branch 'master' into trac_506

Conflicts:
	py_gnome/gnome/movers/current_movers.py
	py_gnome/gnome/movers/wind_movers.py
When rewinding, the ElementCache was performing a rmtree on the temp directory without checking if it exists.
Merge branch 'master' of https://trac.orr.noaa.gov/git/PyGnome
Trac_506 - fixed an issue where references were not being loaded for
subsequent movers - testcase was saving/loading script_boston.py from save
- fixed issue where the Model's nested 'map' object's files and its
  reference was not being updated - this works correctly now.
- simplified Model's schema so it doesn't deserialize nested Map object,
  but calls its serialize/deserialize, then adds the dict to Model
- updated script_runner and run_all to input Model.json as filename
updated load so if only saveloc is given as a directory name, it assumes
there is one Model.json in here and tries to load it
- changed one of the tests to use this
Merge branch 'master' of https://trac.orr.noaa.gov/git/PyGnome
fixed the name of BNA map
commented out some of old schema - Tide isn't really functional with
timeseries at present
Trac_506 - added default References() object back in Savable.load(..)