regen/embed.pl: Add sanity test for entries

A void returning function should not be required to have its return
value tested.
regcomp.c: Don't iterate while changing an inversion list

This adds functions to prevent accidental (or deliberate) iteration over
an inversion list while it is being modified.  This is to catch
development errors, and in production builds, the asserts() are likely
no-ops
regcomp.c: Reword comment

To more accurately reflect newer code
regcomp.c: Handle edge case in inversion list max

The function _invlist_max() cannot currently be called on an inversion
list that was compiled in (via a C language array), because this edge
case is not considered.  I don't think current code ever does call this
function on this case, but that could inadvertently easily change.
regcomp.c: typo in comment
regcomp.c: Add #undef

The #defines in the first part of the file are #undef'd to try to keep
anything from inadvertently leaking into the 2nd part; this one was
omitted.
regcomp.c: Clean up ANYOF_CLASS handling.

The ANYOF_CLASS flag is used in ANYOF nodes (for [bracketed] and the
synthetic start class) only when matching something like \w, [:punct:]
etc., under /l (locale).  It should not be set unless /l is specified.
However, it was always getting set for the synthetic start class.  This
commit fixes that.  The previous code was masking errors in which it was
being tested for unnecessarily, and for much of the 5.17 series, the
synthetic start class was always set to test for locale, which was a
waste of cpu when no locale was specified.
regcomp.c: Remove unnecessary flag setting

The function cl_anything() sets things up so that the synthetic start
class parameter will match any character.  But this flag doesn't
contribute to that, as it sets things to match under certain conditions
only, and the characters it matches already match by the other actions
of the routine (the ANYOF_BITMAP_SETALL just above).
Free up regex ANYOF bit.

This uses a regnode type, of which we have many available, to free up
a bit in the ANYOF regnode flag field, of which we have none, and are
trying to have the same bit do double duty.  This will enable us to
remove some of that double duty in the next commit.
regcomp.h: Split two ANYOF flag bits

This essentially reverts 8b27d3db700fc2fce268e3d78e221a16ccaca2e8
and causes ANYOF nodes that are in locale but don't match things like \w
to have a smaller node size.
regcomp.c, regcomp.h: White-space, comment only

No code changes
Add new regnode for synthetic start class

This creates a regnode specifically for the synthetic start class, which
is a type of ANYOF node.  The flag bit previously used to denote this is
removed.  This paves the way for this bit to be freed up, but first the
other use of this bit must also be removed, which will be done in the
next commit.

There are now three ANYOF-type regnodes.  This one should be called only
in one place in regexec.c.  The other special one is ANYOF_WARN_SUPER.
A synthetic start class node should not do any warning, so there is no
issue of having something need to be both types.
regcomp.c: Free up ANYOF flag bit

This frees up a flag bit for ANYOF regnodes.  The freed bit is currently
not needed for other uses; I decided to make the change now, while how
to do it was fresh in my mind.  There are fewer shifts and masks as a
result, as well.

This commit moves the information this bit contains to the otherwise
unused 'next_off' field in the synthetic start class.  This paradigm
could be used to pass information to the regex matching code for just
the synthetic start class, but the current bit is used just during
compilation.
regcomp.c: Use xor to save a test

(Perhaps the C optimizer already figures this out.)
regcomp.c: Make sure optimizer handles node; Note for 3018b823

The check that there isn't a simple regnode unknown to the optimizer
has been commented out since at least
653099ff2c52a6af02b3894d684593dfe31dcc17 in 1999.  This caused us some
slow down for a while in the 5.17 release, as I added a regnode and
didn't think about it needing to be added to the optimizer.  This commit
uncomments out the check, but only for debugging builds, so that a
production environment will run with missing optimization, but
developers will be notified of their error.

Also, in commit 3018b823898645e44b8c37c70ac5c6302b031381, I made an
error in the commit message; I'm adding it here so people digging will
find out the relevant information.  The message said that the new regex
ops were unknown to the optimizer.  I had forgotten that I had included
them in that commit, so that statement was wrong.