This function has four arguments. The first argument in a non-const
molecule that will be the basis for the tautomer enumeration. The second
argument is a functor call-back (see functor API below). The functor's
operator() is called with each new tautomer state enumerated. The
enumeration will continue until the functor returns false or until the
enumeration is complete. The third argument is an unsigned int which
indicates the maximum acceptable energetic category of enumerated
tautomers. The function will return all categories of tautomers from the
lowest available up to this cutoff. If the only available level is higher
than the cutoff, that single level of tautomers will be enumerated. This
control is in addition to the call-back control. Finally, the Boolean
ch3flag argument controls whether tautomer enumeration should include
tautomerization of methyl and methylene groups adjacent to a conjugated
system. This allows cyclohexa-2,4-dien-1-one, O=C1CC=CC=C1, to
be canonicalized as a tautomer of phenol, Oc1ccccc1. Unfortunately,
the combinatorial explosion from tautomerizing across the alpha carbon of
amino acids means that this option should not be used when enumerating
the tautomers of proteins and large peptides. This function returns the
total number of tautomers enumerated.