mktables: Fix bug when deleting final range

When a Range_List is emptied, there is a bug which causes a runtime
error when trying to refer to a non-existent element.  This avoids that.
A future commit would have run afoul of this bug.
regcomp.c: Special case /[UV_MAX]/

The highest code point representable on the machine has to be special
cased.  Earlier commits for 5.14 did this for ranges ending in this code
point, but it turns out there needs to be a special-special case when
the range contains just it.
regcomp.c: Allow search to work on empty inversion lists

You cannot retrieve the array of an empty inversion list, so the code
has to be reordered to do that after the list is known to be non-empty.
I haven't been able to find a case where this currently fails, but
future commits open up the possibility.
regcomp.c: Add assertion, comments
Add empty inline_invlist.c

This will be used for things need to handle inversion lists in the three
files that currently use them.  I'm putting this in a separate hdr,
because inversion lists are very internal-only, so should not be grouped
in with things that there is an external API for.  It is a dot-c file so
that the functions can continue to be declared with embed.fnc, and
porting/args_assert.t will continue to work, as it looks only in .c
files.
regcomp.c: Silence compiler warning.

The warning that this variable can be used uninitialized is spurious,
but silence it nonetheless.
regcomp.c: Rename 2 functions to indicate private nature

These two functions will be moved into a header in a future commit,
where they will be accessible outside regcomp.c  Prefix their names with
an underscore to emphasize that they are private
regcomp.c: Move functions to inline_invlist.c

This populates inline_invlist.c with some static inline functions and
macro defines.  These are the ones that are anticipated to be needed in
the near term outside regcomp.c
utf8.c: Speed up \X processing of Korean

\X matches according to a complicated pattern that is hard-coded in
regexec.c.  Part of that pattern involves checking if a code point is a
component of a Hangul Syllable or not.  For Korean code points, this
involves checking against multiple tables.  It turns out that two of
those tables are arranged so that the checks for them can be done via an
arithmetic expression; Unicode publishes algorithms for determining
various characteristics based on their very structured ordering.

This patch converts the routines that check these two tables to instead
use the arithmetic expression.
Comment out unused function

In looking at \X handling, I noticed that this function which is
intended for use in it, actually isn't used.  This function may someday
be useful, so I'm leaving the source in.
regexec.c: Use xor to save a branch

Probably this gets optimized this way anyway.
Add caching to inversion list searches

Benchmarking showed some speed-up when the result of the previous
search in an inversion list is cached, thus potentially avoiding a
search in the next call.  This adds a field to each inversion list which
caches its previous search result.
embed.fnc: Mark internal function as "may change"

This function is not designed for a public API, and should have been so
listed.
utf8.c: Revise internal API of swash_init()

This revises the API for the version of swash_init() that is usable
by core Perl.  The external interface is unaffected.  There is now a
flags parameter to allow for future growth.  And the core internal-only
function that returns if a swash has a user-defined property in it or
not has been removed.  This information is now returned via the new
flags parameter upon initialization, and is unavailable afterwards.
This is to prepare for the flexibility to change the swash that is
needed in future commits.
embed.fnc: Turn null wrapper function into macro

This function only does something on EBCDIC platforms.  On ASCII ones
make it a macro, like similar ones to avoid useless function nesting
regexec.c: Use get method instead of internals

A new get method has been written to access the internals of a swash
it's best to use it.

This also moves the error checking to the method
regexec.c: Reword comment

This portion of the comment is unnecessary, and doesn't really reflect
the implementation
utf8.c: collapse a function parameter

Now that we have a flags parameter, we can get put this parameter as
just another flag, giving a cleaner interface to this internal-only
function.  This also renames the flag parameter to <flag_p> to indicate
it needs to be dereferenced.
utf8.c: Shorten hash key for speed

Experiments have shown that longer hash keys impact performance.  See
the thread at
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2012-08/msg00869.html

This patch shortens a key used very frequently.  There are other keys in
this hash which are used frequently in some circumstances, but I expect
to change to use fewer in the future, so am not changing them now
utf8.c: Add comment about speed-up attempt

This might keep someone later from attempting the speedup which didn't
actually help, so I didn't commit it