PATCH: [perl #11560] extraneous msg in viacode

This refactors to test for the hash element being defined before
attempting to use it.
charnames: White-space only

Outdent code that previously was enclosed in a block
version bump _charnames.pm to keep porting tests happy
op.c: Warnings cleanup.
Use HEKf in 2 places in op.c:S_finalize_op

The previous patch was written before HEKf existed.
HEKf with HEKfARG(...) is much faster than SVf with
SVfARG(sv_2mortal(newSVhek(...)))
Clarify VMS-specific handling of $/ = \N.

When the record read feature was introduced in 5b2b9c687790241e8
in 1998 (but by Dan Sugalski, not Hans Mulder as the git history
erroneously says), sysread() was a couple of years from learning
about utf-8 and PerlIO was just a fancy way of calling stdio.  The
documentation was reasonable given that environment.

Now it's potentially misleading to say that record reads are "the
equivalent of C<sysread>" because sysread on filehandles opened
with ":utf8" does characters, not bytes.  The salient point about
the analogy with sysread was always that the read is unbuffered.
In the old days, this was in contrast to the buffering done in
stdio's fread(), but now it's in contrast to the buffering in the
perlio layer.  By emphasizing the role of buffering, we can
actually shorten and simplify the docs.

Side note:  Both Camel 3 and Camel 4 have the following problematic
statement in the documentation of $/: "Record mode mixes with line
mode only on systems where standard I/O supplies a read(3) function;
VMS is a notable exception."  VMS certainly does have a read(3)
function and in fact that's what's used directly for record reads
(via PerlLIO_read) on VMS only.  And as far as I know, it is
fread(), not read(), that is considered "standard I/O" everywhere.

N.B. Record reads on non-record-oriented files on VMS will likely
start using the same buffering as other platforms in a future
version of Perl.
toke.c: "Bad name after %s%s" cleanup.
toke.c: "Bareword "%s" refers to nonexistent package" cleanup.
toke.c: "Ambiguous use of -%s resolved as -&%s()" cleanup.
toke.c: "CORE::%s is not a keyword" cleanup.
toke.c: "Precedence problem: open %s should be open(%s)" cleanup.
toke.c: "Illegal character in prototype" for Latin-1 protos
[Merge] More UTF8 patches

These are more of Brian Fraser’s UTF8 patches from perl
ticket #107008.

There will probably be just one more before 5.16 (the label patch).
Label UTF8 cleanup

This meant changing LABEL's definition in perly.y, so most of this
commit is actually from the regened files.
Fix test failure

This fixes up tests added in the previous commit, making them take
evalbytes into account.  Those tests were originally written in a
branch where evalbytes didn’t exist and the unicode_eval feature
was implicitly enabled.
Copy the pv in parse_label

Two commits ago, the label-handling code in the tokenizer was changed
to record the label in an SVOP instead of just a plain unclaimed PV.
Likewise, the parser (perly.y) was changed to copy the string out of
the SVOP’s SV, insteading of taking ownership of the existing PV.
parse_label was modified to take the string out of the SVOP, but was
not copying it like perly.y.  So it resulted in this:

$ PERL_DESTRUCT_LEVEL=2 ./perl -Ilib ext/XS-APItest/t/swaplabel.t
1..56
ok 1
... truncated ...
ok 56
panic: free from wrong pool during global destruction.
Increase $XS::APItest::VERSION to 0.38
clear magic flags in sv_clear

commit 5bec93bead1c10563a402404de095bbdf398790f made temporary use of the
no-longer used SvMAGIC field while freeing a HV. This commit makes
sure that before this happens, that the SvMAGICAL flags are turned off.

This is because it turns out that some XS code (e.g. Glib) can leave an SV
with a null SvMAGIC field, but with magic flags still set.
Fix error in regexp, causing it to match too much.
Merge branch 'abigail/for-5.17' into blead