Some refactoring of KineticsFamily.__generateReactions().

This refactoring is intended to speed things up a bit by reducing the
number of calls to generateResonanceIsomers(). To accomplish this, the
steps of removing reactions that don't match a given set of products
and combining reactions that give the same products are once again
performed separately.

The refactored algorithm also removes some duplicated code.
Some Cythonization added to Molecule.generateResonanceIsomers() et al.

We do this often enough that we want to make it as fast as possible.