Count number of atoms of a given element type in a molecule.
Pulls thermo comments from a chemkin file.
Merge branch 'master' of git://github.com/jwallen/RMG-Py
Fixed some unicode writing issues when exporting database.
Added hard-coding of new reaction families.  Fixed more unicode errors.
Allow reverse fitting of pdep reactions for diff models.
Don't break at "END" in comments when parsing Chemkin files.

The reaction block in a Chemkin file continues until an END marker is
encountered. However, the previous implementation was also stopping at any
encountering of the END keyword, even in a comment. The new implementation
first strips the comment from the line before checking for the END marker.
Always check for duplicate reactions before saving Chemkin file.

This helps ensure that the generated Chemkin file is valid. If the duplicate
status of a reaction must be set, a warning is printed to the log. In the
future we should probably have these reactions already marked as duplicate
before we reach this point, so that this warning message is not printed.
Fixed bug in saving of Troe kinetics to Chemkin files.

Troe is no longer a child class of Lindemann.
Create generateThermoDataForListOfSpecies() method in CoreEdgeReactionModel

This is so we can do parallelization etc within this method.
For now it's very simple and just the same as before.
An attempt at using SCOOP to parallelize the thermo data estimation.

Run as python -m scoop -vv rmg.py path/to/input.py

If this works, it will be slow, as we're pickling and passing
the database every time we try to evaluate a species.

However, it's worse than that because it seems the database is 
unpickleable, giving a "TypeError: can't pickle instancemethod objects".

Debugging SCOOP with Python 2.x sucks, because it hides where 
the error is (apparently this is better in Python 3). However,
this same error can be generated by
        import pickle
        print "trying to pickle the database"
        print pickle.dumps(database)
Fixed bug in evaluating entropy of ThermoData objects below 300 K.

I had previously fixed the same bug (assuming a positive dCp/dT at low
temperature, which is not always true for very small molecules) for the
enthalpy, but forgot to propagate the same fix for entropy until now.
Use H298 and S298 directly from ThermoData when fitting Wilhoit in RMG jobs.

This way we don't have to worry about bugs in the getEnthalpy() or
getEntropy() methods, such as the one most recently fixed.
Added __reduce__() and __setstate__() methods to database classes.

These methods are needed in order to be able to properly pickle and unpickle
the database. Note that these classes - ThermoDatabase, KineticsDatabase,
and StatmechDatabase - need to be new-style classes (i.e. derived from
object) for __reduce__() and __setstate__() to be used by the pickler.

Closes #103.
Merge remote-tracking branch 'origin/master' into scoop

Hopefully this fixes the unpickleable database problem
Convert from using SCOOP to multiprocessing.

This won't work across clusters, but avoids having
to pass the database every time.
Get multiprocessing working for thermo estimation.

Estimating the thermo of a species updates not only
the species.thermo but also the species.conformer.
This must also be preserved.

Also, storing the pool of workers in the CoreEdgeReactionModel
instance means it can't be pickled (for Restart) so we now
store the pool as a module level variable.