regcomp.c: Refactor so can remove duplicate code

This commit prepares the way for a later commit to remove a chunk of
essentially duplicate code.  It does this at the cost of an extra
test of a boolean each time through the loop.  But, it saves calculating
the fold unless necessary, a potentially expensive operation.  When the
next input is a quantifier that calculated fold is discarded, unused.
This commit avoids doing that calculation when the next input is a
quantifier.
regcomp.c: Remove (almost) duplicate code

A previous commit opened the way to refactor this so that the two
fairly lengthy code blocks that are identical (except for changing the
variable <len>) can have one of them removed.
regcomp.c: Use function instead of repeating its code

A new flag to to_uni_fold() causes it to do the same work that this code
does, so just call it.
regcomp.c: Resolve EBCDIC inconsistency towards simpler

This code has assumed that to_uni_fold() returns its folds in Unicode
(i.e.  Latin1) rather than native EBCDIC.  Other code in the core
assumes the opposite.  One has to change.  I'm changing this one, as the
issues should be dealt with at the lowest level possible, which is in
to_uni_fold().  Since we don't currently have an EBCDIC platform to test
on, making sure that it all hangs together will have to be deferred
until such time as we do.

By doing this we make this code simpler and faster.  The fold has
already been calculated, we just need to copy it to the final place
(done in pass2).
regcomp.c: Use mnemonic not numeric constant

Future commits will add other uses of this number.
regcomp.c: Trade stack space for time

Pass 1 of regular expression compilation merely calculates the size it
will need. (Note that Yves and I both think this is very suboptimal
behavior.)  Nothing is written out during this pass, but sizes are
just incremented.  The code in regcomp.c all knows this, and skips
writing things in pass 1.  However, when folding, code in other files is
called which doesn't have this size-only mode, and always writes its
results out.  Currently, regcomp handles this by passing to that code a
temporary buffer allocated for the purpose.  In pass1, the result is
simply ignored; in pass2, the results are copied to the correct final
destination.

We can avoid that copy by making the temporary buffer large enough to
hold the whole node, and in pass1, use it instead of the node.  The
non-regcomp code writes to the same relative spot in the buffer that it
will use for the real node.  In pass2 the real destination is used, and
the fold gets written directly to the correct spot.

Note that this increases the size pushed onto the stack, but code is
ripped out as well.

However, the main reason I'm doing this is not this speed-up; it is
because it is needed by future commits to fix a bug.
regcomp.c: White-space only

This indents and outdents to compensate for newly formed and orphan
blocks, respectively; and reflows comments to fit in 80 columns
regcomp.c: Remove variable whose value needed just once

Previous commits have removed all but one instance of using this
variable, so just use the expression it equates to.
regcomp.c: Comments update

This adds some comments and white-space lines, and updates other
comments to account for the fact that trie handling has changed since
they were written.
regcomp.c: Can now do /u instead of forcing to utf8

Now that there is a /u modifier, a regex doesn't have to be in UTF-8 in
order to force Unicode semantics.  Change this relict from the past.
regcomp.c: Make comment more accurate
regcomp.c: Rename static fcn to better reflect its purpose

This function handles \N of any ilk, not just named sequences.
perlop:clarify wording
regcomp.c: Make invlist_search() usable from re_comp.c

This was a static function which I couldn't get to be callable from the
debugging version of regcomp.c.  This makes it public, but known only
in the regcomp.c source file.  It changes the name to begin with an
underscore so that if someone cheats by adding preprocessor #defines,
they still have to call it with the name that convention indicates is a
private function.
regen/mk_PL_charclass.pl: Remove obsolete code

Octals are no longer checked via this mechanism.
mktables: grammar in comments
mktables: Add comment to gen'd data file
Unicode::UCD::prop_invlist() Allow to return internal property

This creates an optional undocumented parameter to this function to
allow it to return the inversion list of an internal-only Perl property.
This will be used by other functions in Perl, but should not be
documented, as we don't want to encourage the use of internal-only
properties, which are subject to change or removal without notice.
regen/mk_invlists: Add mode to generate above-Latin1 only

This change adds the ability to specify that an output inversion list is
to contain only those code points that are above Latin-1.  Typically,
the Latin-1 ones will be accessed from some other means.
mktables: Generate tables for chars that aren't in final fold pos

This starts with the existing table that mktables generates that lists
all the characters in Unicode that occur in multi-character folds, and
aren't in the final positions of any such fold.

It generates data structures with this information to make it quickly
available to code that wants to use it.  Future commits will use these
tables.