Enabled regeneration of properties in Geometry, Physics and Fluids
- Made a fun change: Geometry and Physics objects are now dicts where their Models are stored under the appropriate attribute (geom['pore.seed'] is a function, that when called returns a freshly generated set of values)
- Each time the regenerate of geom or phys is called it write the new values to the network or fluid object
- Small snag: I couldn't do this for fluids since they must store their own static data in their dict, so had to put the models elsewhere.  The fluid regenerate knows where to look.
Cleaned up the object appending
Switched fluids around so that functions are stored in the dict, and static data is stored in fluid._static
- This enables the function to be over written with regular data
- Had to subclass __getitem__ for this to all work
Turning things around a bit...making geom and phys hold their own data, and have network and fluids pull it when needed.
Awesomeness:
- Geom and Phys are now full fledge objects.  They inherit from Tools (just like net and fluid), store their own data in local dictionaries
- Geom, Phys and Fluids models are stored in a ._models dictionary that is called when .regenerate is called. Regenerate places new data in the object's own dictionaries. The fluid regenerate is special, it regenerates itself, then regenerates its associated physics, then grabs that physics data and stores it locally
- set_locations is gone, and locations must be set during init
- generate is gone, and subclasses are produced upon init (I get why this is better now, since it saves code in the script)