mk_PL_charclass.pl: Don't use \w, \s

Now that these are partially compiled into the Perl core, we have a
chicken and egg problem if one changes.  Instead, use the \p{}
equivalent which doesn't have this problem.
Experimentally add VT to \s definition

This commit is the minimal necessary to get \s to match the vertical
tab.  It is being done early in the 5.17 series in order to see what
repercussions there might be from doing this.

It may well be that we decide that this change will require a 'use
feature' to activate.  In any event there is significant documentation
of the behavior without the VT that this patch does not address at all.

Tom Christiansen asked Larry Wall why \s did not include VT, and
reported that Larry replied that he did not remember, but had no
objections to adding it.
perlfunc: Add reference to simple folding docs
doio.c: Add some comments
embed.fnc: Change formal param name to match docs

This is purely so that perlapi will be accurate in this regard.
utf8.h: Comment improvementes, white-space
utf8.h: Simplify expressions

These expressions, while valid, are overly complicated in order to make
it easy to separate out problematic code points in the future, such as
surrogates.  But we made a decision in 5.12 to not go in that direction,
but to accept such problematic code points in general.  I  haven't
heard any cause to regret that decision; if we ever want to go back, the
blame log will easily allow us to.
utf8.h, pp.c: Add UTF8_IS_REPLACEMENT macro, and use it

This should speed things up slightly, as it looks directly at the UTF-8
source, instead of having to decode it first.
utf8.c: Extra branch to avoid others in the typical case

This test eliminates all code points less than U+D800 from having to be
checked more than once, at the expense of an extra test for code points
that are larger
utf8.c: Remove unnecessary validation

These two functions are to be called only on strings known to be valid,
so we can skip the validation.
utf8.c: Skip extraneous function call

This eliminates an intermediate function call by calling the base level
one directly.
podcheck.t: Allow checking old perldelta

The test was wrong, causing it to croak when an old perldelta file was
passed explicitly to podcheck.
utf8n_to_uvuni(): Add a few compiler hints

Tell the compiler that malformed input is not likely, so it can optimize
accordingly.
utf8.c: Add comment
regexec.c: Don't allow malformations under EBCDIC

Previously, only under EBCDIC, malformed input was allowed here if
warnings are off.  This code probably needs to be rewritten, to do
proper folding, but I am not up to that right now.
pp_pack.c: Use macro instead of its expansion

There is a macro that means this code; use it.
regcomp.c: Wrap long comment to 80 columns
utf8.c: Re-order if branches for speed

Probably the C optimizer does this anyway, but do the uncomplicated test
before the (mutually exclusive) complicated test (though the
complications are hidden in a macro).  The new first test is a
pre-requisite for the new 2nd test anyway.
regexec.c: Use foldcase instead of lower/upper

The way Perl deals with folds of ASCII-range characters, is to have an
array that maps to the opposite case character.  For example, fold[a] is
A, and fold[A] is a.  To see if a character matches a pattern character
case-insensitively, you compare it against the pattern character itself,
and if that fails, against the fold[pattern character].

Unfortunately that breaks down outside of ASCII, where the folds are not
necessarily one-to-one.  This code is a vestige of that original
paradim, and I'm converting it to use the more modern.  The apparent
reason it doesn't fail in fold_grind.t is that it is for CURLY nodes,
and CURLY is not currently set on EXACTish nodes unless the node
contains a single UTF-8 invariant character.   Effectively, that means
a character in the ASCII range.

I think parts of this could be simplified further, but I don't
understand the whole context of this code to undertake that.
utf8.c: Add assertion