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
Remove old (and broken) code for saving distances in a dict() format.

The whole entry.data[entry.data.keys()[0]][0] thing is broken anyway.
This shouldn't be needed now the TS_groups.py is in the new format.
TSGroups to manage training data in DistanceData format.