Added (hardcoded) functionality for handling rings when generating frequencies.
Added (hardcoded) functionality for handling rings when generating frequencies.

In the new implementation, if a heavy atom in the molecule is in a cycle,
then a new functional group ringCH is incremented for each C-H bond in the
cycle. This is done instead of descending the functional group tree to
find the most specific group. This must be hardcoded as a special case
because our adjacency list representation is not well equipped to handle
"C-H bond with the carbon atom in a cycle" as a functional group.

This was tested with ethylene oxide (C1OC1). A QC calculation showed that
the lowest frequency in this molecule is ~800 cm^-1. With the old
algorithm, the system was overspecified and contained several frequencies
in the 300-800 cm^-1 range. Worse, the frequencies did not actually
reflect the heat capacity they were fitted to, leading to invalid Keq
values when running the pdep code. The new algorithm performs much better.

KEHANG/RMG-Py,faribas/RMG-Py,nyee/RMG-Py,faribas/RMG-Py,enochd/RMG-Py,enochd/RMG-Py,nickvandewiele/RMG-Py,chatelak/RMG-Py,chatelak/RMG-Py,KEHANG/RMG-Py,comocheng/RMG-Py,pierrelb/RMG-Py,comocheng/RMG-Py,nyee/RMG-Py,nickvandewiele/RMG-Py,pierrelb/RMG-Py