Moved saveGroups to data/kinetics/groups.py.

Method was located in data/kinetics/family.py, but it is
now called from */family.py.
Corrected check for changes in group estimates.
Created saveTransitionStateGroups

In transitionstates.py, and called from family.py
No forbidden structures for TS distances.

A forbidden structure won't have a transition state
geometry.
saveEntries will print the transition state distances.

This needs to be made more general.
Read the group attributes when saving the group data.
Group values now stored based on the labels.
Move the "add to the history if it's changed" code

Instead of adding to the history of everything if anything has changed,
we now only add to new items.
The "has it changed" detection is currently broken, because old data is read into
an incompatible format somehow.

This correlates with a commit in the RMG-database repository.
Save a valid dictionary (with commas) when saving TS geometries
Created a DistanceData class for storing distance geometry information.

This should be usable for the group additive distance geometry estimates.
Currently it's defined in the rmgpy.data.kinetics module in the transitionstates file,
which may cause some cyclic import difficulties. Perhaps it should live elsewhere
(rmgpy.kinetics.KineticsData is an analogy)

The add(other) method should be helpful for the group ADDitive method.
Hopefully copy.copy(distancedata) will work as well (but will it need a deepcopy?)
TSGroups.generateGroupAdditivityValues() uses new DistanceData class.

We can also now load the group values with DistanceData objects in.
estimateDistancesUsingGroupAdditivity should now work.

Haven't tested it, but it now uses the DistanceData.add(other) method.
Reaction families load Transition State data if available.

Families with it will have family.transitionStates = <some TransitionStates object>
Families without it will have amily.transitionStates = None
TransitionStates class has estimateDistances(reaction) method