Print tunneling coefficients in CanTherm kinetics output.

The comments before a kinetics() block in a CanTherm output file now show
a small table with the values of k(T) with and without tunneling, plus
the values of the tunneling factors themselves, at various temperatures.
This would be useful in case anyone wanted to use the tunneling factors
in another setting, or for printing in a table in a paper, etc.
Manually add zero-point energy when not using CBS methods in CanTherm.

The energy read from this location does not include the zero-point energy;
it is the energy at the bottom of the potential well. By convention,
CanTherm always thinks in terms of ground-state energies, which by
definition include the zero-point energy.

Note that the CBS methods were using the correct ground-state energy,
and that you were supposed to be including zero-point energies in values
specified manually in the input file, so this only affects your jobs if
you were using a CBS method or manually specifying energies.
Don't forget units in e5f18b170a204dd8e808b9a1dcf65bfbd649cf74.

Was adding an energy in Hartrees to one in J/mol by mistake.
Added logging info to completed simulations
Raise exception if negative barrier encountered in Eckart tunneling calculation.

This is usually caused by users giving the wrong numbers of each atom,
which results in the E0 for the species or transition state being
referenced to the wrong reference state. Before this would usually cause
the code to get stuck in an infinite loop since the error would occur in
a Cython block; now the code will raise a ValueError and stop with a
more useful error message.
Check for REV after removing comment from line in Chemkin file reader.

Otherwise you could match things like the word "reversible" in the
comment, which could lead to unexpected behavior.
Fixed bug in loadRMGJavaJob() involving multiple reaction systems.

RMG-Java allows for multiple reaction systems, but only one set of
termination criteria (i.e. one conversion or time to use for all reaction
systems). When loaded in RMG-Py, the current algorithm reuses the same
TerminationConversion or TerminationTime object for all reaction systems.
However, when it tries to map the conversion species from the condition
file to the corresponding Chemkin file, it applies the change to each
reaction system, which fails for all but the first.

It might be better for the RMG-Java condition file loader to make
different TerminationTime and TerminationConversion objects for each
reaction system, but implementing that approach was more complicated than
this simpler fix, so I've held off for now.
Better parsing of RMG-Java condition files via readMeaningfulLineJava().

The previous implementation was much less flexible when it comes to
handling comments in the condition file. The new helper method
readMeaningfulLineJava() improves things considerably.
More flexibility in parsing of reactions in Chemkin files

The new implementation takes each line containing a reaction equation,
removes any comment information, extracts the three Arrhenius parameters,
and then assumes anything that is left is part of the reaction equation.
This should work for almost all of the permutations of Chemkin-like files
I have seen recently, including those with spaces in the reaction
equation and with reaction equations longer than 52 characters.

I've also added functionality for parsing reactions written as 2A=B+C
(instead of A+A=B+C) and A+B=2C (instead of A+B=2C). Since Chemkin
already requires that species identifiers begin with a letter, this is
a straightforward implementation.
Merge branch 'chemkin'
Handle bizarre representation of some integers in Chemkin Chebyshev output.

When merging two mechanisms in Chemkin-MFC, the output apparently writes
the numbers of temperature and pressure terms as e.g. 6.0E0 and 4.0E0
instead of 6 and 4. To handle this in Python we need to first convert
the string to float, and then on to int.
Better handling of stoichiometric coefficients in Chemkin files.

I had previously added code to handle the presence of stoichiometric
coefficients, but placed it inside an else clause when I should have
placed it before the corresponding if block.
Started work on 3D geometry estimation.

The Molecule class has a method generate3Dgeometry() which is
currently called every time Molecule.draw() is called.