Force barriers to be >=0 for all reactions that are run through PDep code.

Previously, kinetics coming from a reaction library (such as Glarborg/HighP)
were exempt from the fixBarrierHeight check. Now, if we are going to 
run them through a PDep calculation (PDep is on and the reaction is 
unimolecular) then we fix the barrier height.

Should address #77, or at least the comment
https://github.com/GreenGroup/RMG-Py/issues/77#issuecomment-14205741
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.
Added toArrhenius(Tmin,Tmax) method to MultiArrhenius kinetics.

This fits a single Arrhenius expression to the kinetics data from the
MultiArrhenius kinetics.

Wasn't sure of the best way to get the units of k from a kinetics object.
Seems like this could be useful elsewhere, and perhaps should be in 
the base parent class.
Convert kinetics to Arrhenius and check positive barrier inside PDep code.

Rather than trying to do this when loading a reaction library (which causes problems
when the same reaction is in a seed mechanism) we do the conversion and check
at the last minute, just before running the PDep calculation.
Report when a library reaction is skipped because it's already in the model.

These are usually reactions that are in a seed mechanism,
but could be in a previous reaction library. In either case,
they won't be added to the edge.
Don't check barrier heights when adding reaction library to edge.

We now check for negative barriers inside the PDep code.
That means that this bit of Library code doesn't have any "is pressureDependence on"
logic, which feels better.
Bug fix in new MultiArrhenius > Arrhenius conversion.

Also fixed the docstring.
Bug fix: missing numpy import
Allow CanTherm to save multiple job outputs to chem.inp.

The resulting chem.inp will not be a complete Chemkin file, but will contain
snippets that can be easily moved into Chemkin files.
Change all Cython attributes marked readonly to public.

This allows us to compile RMG-Py again with the latest version of Cython
(0.19). Cython 0.17.x and 0.18.x still do not work because of another issue.
Despite the change, you should probably still treat these attributes as read-
only.