Add an E0 attribute to the Thermo property base class.

All thermo properties (ThermoData, NASA, Wilhoit, etc.) should now have this.
It is currently not set by initiation but has to be set afterwards.
Currently this data is only stored on the Conformer stored within a Species 
(eg. species.conformer.E0 rather than species.thermo.E0). I hope storing it 
in the thermo will improve both
1) parallelization (the "estimate thermo" routines will have no side effects
   besides updating the thermo object which they return.
2) QM thermo (where we should be able to extract the E0 from the QM calculation log)
Add the E0 property to all Thermo (HeatCapacityModel) classes.

It is now in the construction signature of these classes where it should 
be specified (NASA, and ThermoData). For Wilhoit it is the same as H0 and
so should not be specified (it is calculated when you fit the Wilhoit. If you wish
to specify manually, change H0).
Added E0 to Thermo unit tests.

Many work, but the conversion between NASA/Wilhoit/ThermoData is poor to say the least.
E0 varies by hundreds of kJ/mol!
Change the way Wilhoit class stores/calculates E0

The constant of integration H0 is not equal to the enthlapy at 0K,
so the parameter E0 has to be calculated instead of just returning H0.
Fix Thermo conversion unit tests.

Some of the constants in the setup were inconsistent. I think these are now right.
I also added two "round trip" conversion tests, that go from Wilhoit back to Wilhoit
either via NASA or ThermoData. These now all pass.
(I had to loosen the "almost" equal tolerance for E0, but I think 10 or 20 J/mol is ok)
Fix Wilhoit unit tests for new E0 behavior.
Use E0 on new Wilhoit class to set Conformer energy.
Increase limit for warning about poor heat capacity fits.

This is not a very helpful warning.
How high is too high? What impact does it have? What can we do about it anyway?
Don't use Conformers just to store E0 from the Thermo data.

Rather than create a Conformer as a side effect of getting thermo data,
we now just make sure the thermo data has an E0 attached to it
(this requires fitting a Wilhoit if, for example, you read a NASA polynomial
in from a database, and want to keep it as a NASA polynomial).

We now only create Conformers if and when needed in the generateStatMech()
method rather than the generateThermoData() method.
Create Conformer objects for species in PDepNetwork.updateConfigurations().

Now that we are calculating and storing E0 on the thermo object, we need to
get that attribute to the conformer attribute. We need this value for all
configurations on the PES, including product channels.
Merge branch 'thermo' to get E0 stored on species.thermo not species.conformer.

The net change of these commits is that the energy at zero kelvin (also equal
to the enthlapy at zero kelvin) is now a property of the thermo object
(eg. classes NASA, ThermoData, Wilhoit) instead of requiring a Conformer
object just to store this information. Conformers are still needed for some
purposes (eg. stat mech partition coefficients) but are now only made when needed,
not as a side-effect of estimating thermodynamics.
Fix pickling of Species objects.

For some reason the molecularWeight was out of order in the reduce() method.
This fixes a unit test.