Convert more EXACTFish nodes to EXACT when possible

Under /i matching, many characters match only themselves, such a
punctuation.  If a node contains only such characters it can be an EXACT
node.  The optimizer gets better hints when dealing with EXACT nodes
than ones with folding.

This changes the alloc_maybe_populate() function to look for
possibilities of non-folding input.
regcomp.c: Simplify /l Synthetic Start Class construction

The ANYOF_POSIXL flag is needed in general for ANYOF nodes to indicate
if the struct contains an extra U32 element used to hold the list of
POSIX classes (like \w and [:punct:]) whose matches depend on the locale
in effect at the time of runtime pattern matching.

But the SSC always contains this U32, and so doesn't need to use the
flag.  Instead, if there aren't any such classes, the U32 will be zero.

Removing keeping track of this flag during the assembly of the SSC
simplifies things.  At the completion of this process, this flag is
set if the U32 is non-zero to pass that information on to regexec.c so
that it doesn't have to special case things.
regexes: Remove uses of ANYOF_LOCALE flag

This flag no longer adds any useful information and can be removed.  An
ANYOF node that depends on locale either matches a POSIX class like /d,
or matches case insensitively, or both.  There are flags for both these
cases, and to see if something matches locale, one merely needs to see
if either flag is set.

Not having to keep track of this extra flag simplifies things, and will
allow it to be removed.  There was a time when this flag was shared with
one of the remaining locale ones, and there was relict code that allowed
that sharing to be reinstated, and which this commit also removes.
regcomp.h: Free up flag bit in ANYOF nodes

The ANYOF_LOC bit was removed from final use in the previous commit.
regcomp.h: Remove extraneous comment

This is obsolete and is a partial copy of the up-to-date comment below
it.
Change method of passing some info from regcomp to regexec

For the last several releases, the fact that an ANYOF node could match
something outside its bitmap has been passed to regexec.c by having its
ARG field not be -1 (appropriately cast).  A bit was set if the match
could occur even if the target string was not UTF-8 encoded.  This
design was used to save a bit, as previously there was a bit also for it
matching UTF-8 strings.

That design is no longer tenable, as a future commit will have a third
(independent) reason for something to match outside the bitmap,  This
commits uses the current spare bit flag to indicate if the match can
only occur if the target string is UTF-8.
regexec.c: Add some checks

These aren't currently needed, but a future commit will change so things
need to be more general
regcomp.h: Allow compiler to perform calculation

Instead of doing the calculation of how many bytes a 256 bitmap
occupies, let the compiler do it.  I believe we are not too far away
from having the ability to allow applications to recompile Perl to
increase the bitmap size trading speed for memory.  ICU has an 8192
bitmap last time I checked.
regexec.c: Rename function, add parameter, make non-static

This is in preparation for a future commit where the function does more
things so its current name would be misleading.  It will need to be
callable from regcomp.c as well.
regcomp.c: Fix more alignment problems

I believe this will fix the remaining alignment problems recently being
shown on gcc on HP-UX, It works on the procura machine.

regnodes should not have stricter alignment than required by U32, for
reasons given in the comments this commit adds to the beginning of
regcomp.h.  Commit 31f05a37 added a new ANYOF regnode struct with a
pointer field.  This requires stricter alignment on some 64-bit platforms,
and hence doesn't work on those platforms.

This commit removes that regnode struct type, and instead stores the
pointer it used via a more indirect, but already existing mechanism
that stores other data..

The function that returns that other data is enlarged to return this new
field as well.  It now needs to be called from regcomp.c, so the
previous commit had renamed and made it accessible from there.  The
"public" function that wraps this one is unchanged.  (I put "public" in
quotes here, because I don't think anyone outside core is or should be
using it, but since it has been publicly available for a long time, I'm
treating the API as unchangeable.  regcomp.c called this public function
before this commit, but needs the additional data returned by the inner
one).
regcomp.c,regexec.c: White-space only

Properly indent two sections of code newly enclosed in braces by the
previous commit
regcomp.c: Move some locale initialization code

This moves some code down a few lines, rewording the comments, and doing
some things only once, instead of each time through the loop.

This eliminates some tests, as the new place already has determined that
some of the preconditions for executing the code have been met.  It
keeps us from generating unnecessary locale nodes for platforms which
don't have isascii().
regcomp.c: Remove no longer used function

I don't think this function will need to be used again.