UPDATED loaddat()+dependents to pass comments as string

Comments pulled from file are passed as a string (newlines
included) but with the comment character and extra whitespace
stripped out. This isn't processed until the load() function,
which then passes that whole string to any comment parser used.
For example, comments=toSettings(), which then accepts the string
and runs splitlines() on it.

Also, reordered functions for clarity; load functions on top,
and dependancies underneath.
UPDATED logging and load() usage in Experiments
Reordered functions in FRET.py
Moved flist() from Experiments to FileIO
REMOVED dotdict() and added OrderedDict()
MOVED file globbing helper find() to FileIO.flist()
UPDATED loading/parsing to handle fret comment settings

Generalized dictionary => configuration file format into
FileIO.fromSettings() which returns a string. When passing
FileIO.savefret() a metadata kwarg, this gets parsed and stuck
at the beginning of the file in the 'comments' section by savedat().

Also, FRET.fromFile() and .toFile() are better abstracted, acting
as convenience functions for FileIO.load() in the case of fret files.
These EXPECT metadata from the Image.Stack, and return metadata that
is saved in the .fret file.

Updated Experiment.Pulling.fromFile() to use .fret file metadata
instead of separately loading cam file.
UPDATED instance variable Stack._setting to .metadata
ADDED calculate() from FRET.py into Stack class
UPDATED Pulling.fromFile() loading of .fret metadata using FileIO.load()
MAJOR FIX for WLC curve fitting

Figured out that MMS2 from Igor was polynomial root of original
equation resulting in an inverted form. So implemented that in
MSinv using numpy.roots, and used @broadcast to allow array input
and output.

1) Added MSinv() fitting function
2) Improved Fit() handling of fixed parameters and inverted fitfunc
  => Correctly swaps x and y in provided parameters
  => Correctly swaps axes when plotting