Tentatively removed more unnecessary calls to Molecule.copy().

We don't need to copy the product molecules again when creating reactions
because we already did that when generating product structures.
Added KineticsFamily.isMoleculeForbidden() method.

This encapsulates functionality for determining if a molecule is forbidden
in a kinetics family, which is currently being checked in multiple places.
Better checking for forbidden structures when generating reactions.

In __generateProductStructures(), the reactants are checked before the
recipe is applied, as there is no point in generating the products if
the reactants are forbidden anyway. Also removed a redundant check of the
product structures from __createReaction() which was already covered in
__generateProductStructures().