REFACTOR to simplify Pulling/Base classes

Pulling only accepts SINGLE experiment: the data necessary for a single
pull. I will create a Container class with appropriate abstraction that
handles collections of Base objects. This will surely be helpful when
doing complex analysis over multiple experiments.

Pulling (through inheritance of Base) implements __getattr__ to lookup
pulling and fret data kept in _data instance variable [as opposed to
setting these as attributes and having Base do all this wierd setattr
stuff.] The simpler implementation means the code is much smaller yet
still flexible (I think) for use with multiple kinds of experiments.

At some point in the future, will likely implement a metaclass for
creating Base subclasses. Challenge is how to abstract complexity of
loading different kinds and numbers of files.

Pulling.plot() offers shorthand for plotting results, and even accepts
**kwargs meant for FRET.plot()! [Duh!]

TODO
1) Need a way to get metadata into Base: sample rate, step size,
stiffness => things that can change from experiment to experiment
2) Other constants like bead_radii can go in Constants
3) Start using Experiment objects in analysis => what API is needed?
ADDED fromFile() to load from .str and .fret
UPDATED Base and Pulling to remove getitem syntax

Because data is often taken at different rates, there will be a
difference in size between FretData and PullData, which prevents them
from becoming straight-up ndarrays. Until I know how I need to access
the data, keep it simple and use only .attribute syntax.
Merge branch 'master' into feature-experiments

Grabbing improvements made to other modules so I can move forward with grabbing metadata from files and into Experiments.Pulling objects.
FIXED tabbing
UPDATED loadstr() et al for comment parsing

Improved abstraction in loadsettings so I could create a subfunction
parseSettings to parse the comment header of any file.

Updated loaddat() to return comments as a list of lines as first element
of 3-tuple (used to be 2-tuple) including colnames and data.

Updated loadstr() to use commentparser kwarg as function to turn comment
list and return it as a data structure. If not present, output is simply
the PullData type, else its a tuple with the parser output as first
tuple element.

Created commentsToSettings() that accepts iterator with items of the
form something=value and returns a dict; piggybacks on parseSettings()
used in loadsettings().

metadata,pull = loadstr('test1.str',commentparser=commentsToSettings)
UPDATED comments for metadata testing
UPDATED Pulling to load metadata, better filehandling

Constructors now simply load **metadata arguments to metadata instance
variable. This is done automatically when using Pulling.fromFile().

fromFile() can be used the following ways:
[assume test.str and test.fret exist]

Pulling.fromFile('test.str') # pulling data only + metadata
Pulling.fromFile('test.str','test.fret') # pulling/fret data
Pulling.fromFile('test') # pull/fret data
DELETED loadPull(): obsolete
FIXED comment
ADDED fromFiles() module function
ADDED file info saving and error reporting to Pulling.fromFile()
Removed some whitespace
ADDED fromGlob() and DELETED Pulling.molname()

Can now readily load multiple experimental files, either as a file
list or in a shorthand glob form. You only need the basename or
str file; it will look for fret files automatically if they are
not specified.

Experiment.fromGlob('SJF4','s1m1')
Experiment.fromFiles(filelist)
UPDATED fromGlob() to fromMatch() for readability
CHANGED Base._fields() to Base.fields()
FIXED bugs in loadsettings and Experiment

Image.ROI.fromFile was breaking because it expected a dotdict which I'm
not using anymore.

FileIO.loadsettings() was incorrectly building the dict, causing only
the last key to be built per heading, i.e. {'donor':{'left':100}}

Pulling.fromFile() puked when there were periods in filename that weren't
supposed to be split on, i.e. 0.5nM. Made my own splitext() in FileIO.

fromFile could use some work, with better functions put into FileIO.
UPDATED plot(): x-axis changes with FEC/FDC
UPDATED plot() to raise ValueError if it doesn't know how to handle inputs
INITIAL