When fitting extra frequencies, don't forget the uncertainties.

If you manipulate an ArrayQuantity.value_si array without also
changing the uncertainty array then you can end up with arrays
of different sizes, which causes a problem when you pickle them
and unpickle them (eg. write and load a restart file).

Hopefully addresses #114
Raise barriers for Library and Seed reactions to avoid PDep problem.

Still addressing issue #77.
Commit f477d79fc38f36b5014b50d0efb4ec855878b8ae added a lot of what's needed,
but the fixBarrierHeight was not being called on Seed Mechanisms or Reaction Libraries,
because these avoid the model.enlarge() method.

This commit adds that, calculating the thermo when necessary,
and also limits it to only working on Arrhenius reactions, which
have an Ea to change.

Remaining potential problem: Some high-P libraries have things like MultiArrhenius reactions.
Check that error is improving before endlessly adding grains to PDep calculation.

This should stop the endless loop that fills memory with 100 million grains and 
fails, when a network is fundamentally flawed. (See issue #77)
Tweaks to methylformate example input file.

It now only runs PDep calcs on networks with up to 16 atoms,
and it saves the restart file every hour.
Tweak requirements.txt file for python dependencies.

The default version of pyparsing, which is installed
as a sub-dependency, only works on Python 3+. We now
explicitly install an older version, so that the other
dependencies work on Python 2.x.
Tweaks to PDep convergence checking.

Only compare numerical values if you're looking at the same reaction,
and correct the thresholds so that slight worsening is allowed near the start.
Change badness definition to max abs log error.
Add __reduce__ method to rmgpy.rmg.pdep.RDepReaction (for pickling).

Hopefully closes #114
Check restart file exists near start of --restart job.

This should save some time.
Check for chemkin duplicate reactions only once.

Previously, every time we wrote a chemkin file (twice per iteration) we checked
every reaction in it for to see if it was a duplicate, in a method that scaled
with N^2 and ended up taking almost a third of a 7-hour RMG-Py run (See issue #78).

This commit changes it so that reactions being added to the core in an enlarge step
are checked for duplicate status at that time, and the entire set is checked after
adding a seed mechanism or reaction library. This way we should be sure to catch
all the duplicates, but only need to check new reactions once at each iteration, 
instead of *all* reactions twice per iteration.

The saveChemkinFile method can now be called without checking for duplicates.
Hopefully this speeds things up.

If called without the 'checkForDuplicates=False' option, then saveChemkinFile 
still does the check, so that other utilities (eg. for merging reaction sets) 
should not be messed up (nor sped up) by this.
Tweak the PDep grainCount improving error checking.

The "give up if you're getting worse" check was too stringent and it gave 
up on a job that would have succeeded had it tried one more iteration. 
This is a difficult thing to tune - I'm not sure how we should go about it.

Perhaps keep an eye on free memory and keep increasing grains until we're close 
to filling it? Anyway, this tweak helps the currently problematic system, and 
we'll just have to keep an eye out for more.