regen/regcharclass.pl: Warn that macros are internal only

This adds a comment to the generated file that the macros are not to be
generally used.
mktables: Allow Unicode Unihan files to compile

Perl normally doesn't include the Unicode Unihan files, but someone is
free to recompile Perl with these.  However, starting with commit
9e65c3f47e483ee7e33b5d748a06f4addd830d60, mktables checks for the
version number on the input files and refuses to compile if incorrect.
(This is to catch Perl trying to compile from a DB with inconsistent
files; I believe Perl used to be shipped with these synchronization
errors.)  However, the Unihan files in Unicode 6.3 do not have the same
syntax as the rest of the files, so since that commit Perl refuses to
compile Unihan.

The files are being updated in 7.0 to use the same syntax as the rest,
so rather than hard-code the current syntax as an exception into
mktables, this just skips checking these files until 7.0.
Unicode/UCD.t: Fix broken test

The test file special cases certain properties by name.  However, it
turns out that a Unihan property that isn't normally compiled by Perl
also should be included.  And all these properties share the same format
given in their files.  So, instead of using the property names, use that
format; this leads to code which is general, and simpler at the same time.
regen/regcharclass.pl: Simplify generated safe macros

This simplifies the macros generated which make sure there are no read
errors.  Prior to this commit, the code generated looked like

      (e - s) > 3
      ? see if things of at most length 4 match
      : (e - s) > 2
        ? see if things of at most length 3 match
        : (e - s) > 1
          ? see if things of at most length 2 match
          : (e - s) > 0
            ? see if things of at most length 1 match

For things that are a single character, the ones greater than length 2
must be in UTF8, and their needed length can be determined by UTF8SKIP,
so we can get rid of most of the (e-s) tests.

This doesn't change the macros which can match multiple characters; that
is a harder to do.
regen/regcharclass.pl: White-space; comment nits only

Indent to account for new block added in the previous commit
perluniprops: Show property name without braces

Properties wth single letter names may be expressed with and without the
brakces; \p{L} and \pL are synonymous.  This commit makes both forms
be in perluniprops, so someone who doesn't know the detailed rules can
search for either to see what it is.

This was suggested by Zsbán Ambrus.
Revert most of 3a8bbffbce: Avoid unnecessary malformed checking

My thinking was muddled when I made that commit, and this reverts the
essence of it.  The theory was that since we have already processed the
regex pattern, we don't need to check it for malformedness, hence we
don't need the "safe" form of certain macros that check for and avoid
running off the end of the buffer.  It is true that we don't have to
worry about malformedness indicating that the buffer is bigger than it
really is, but these macros can match up to three well-formed
characters, so we do have to make sure that all three are in the buffer,
and that the input isn't just the first two at the buffer's end.

This was caught by running valgrind.
regen/regcharclass.pl: Don't generate unused macros

The macros generated by these options are not needed in the core;
generating them just clutters up the header file, and some will actually
be forbidden by the next commit.
regen/regcharclass.pl: Forbid non-safe macros for multi-char matches

For matches that can match more than a single code point, one should
always use a macro that makes sure that one doesn't read off the end of
the buffer.  This is because the buffer might end with the first N
characters of a sequence with at least N+1 in it, and we don't want to
read that N+1 position in the buffer.

If this had been in place, buggy commit 3a8bbffbce would not have
happened.