browser.byMolecule sets date metadata and overrides with kwargs
AbstractData returns same kind getitem element or slice
calibration: comments and name change improvements
experiment.List and experiment.Pulling improvements to plot/save
fplot.Figure fix refs to self.figure/self._figure
experiment.List saveall => save() into single file
Add fileIO.sort_files
Update constants.stiffness
datatypes field access is now done by properties

Before, TrapData.ext would use __getattr__ to access extension
field in data. But with no proper __setattr__, one would mistakenly
try to do trap.ext += 100 or something but only end up setting an
attribute which wouldn't actually affect trap.data (the numpy array).

I could have implemented __setattr__ and then used an AbstractData
base method to look up and set fields... but I thought of this more
straightforward and explicit way first, which is to set each field
as a property on the object with a helper method field_property.
curvefit cleanup -> moved unused to scratch
experiment: legend plot off by default, fix sort bug in List, more fields in Pulling.info
Tweaking fplot
Add fcalc background subtraction functions. NEEDS WORK
Add persistentdict.reload() from file
dropping old curvefit test cases; add TestFitRegions
testFileIO: add empty TestFileIO case
Allow experiment.fromFile() if filename parsing fails