mktables: Shorten test file name

This is in preparation for actually using it.  This makes sure it works
on DOS 8.3 filenames.
mktables: Optionally create normalization test file

Unicode furnishes a rather complete normalization test suite.  This code
adds an option to mktables to use that input to create a test file for
Perl.

Due to its slowness, about 400K tests, this is not currently enabled by
default.
mktables: skip some processing in debug mode

Otherwise, it tends to fail.
mktables: White-space only

This indents the loop to correctly align under a newly added block, and
reflows to fit in 80 columns
mktables: Remove unnecessary code

These lines just duplicate what's in the subsequent 'else'
mktables: Lowercase property name to conform with Unicode

For some reason, they use the name lowercased; this change makes it
easier for mktables to work in earlier versions of Unicode when this
property is not available, and mktables constructs a dummy one itself
mktables: Suppress warnings for placeholder tables

Placeholder tables are anomalous, and so may run afoul of sanity checks,
unless those are suppressed for them.
mktables: Move dummy table generation earlier

These two tables are not furnished by Unicode in early releases, but if
they are not present, Perl's regex code will fail very ungracefully when
trying to deal with \X.  Therefore, we create placeholders for these so
that the code will degrade gracefully when Perl is run with early
Unicode versions.

This patch moves the generation of these placeholder tables to a
function that gets executed earlier in the process.  This allows the
loop that follows the new placement to create the proper match tables
and fill in the defaults, like it does for all other Unicode properties.

This allows this commit to remove special tests for the existence of
these properties as well.

This is an interim patch.  Future commits will actually fill in these
tables, making them non placeholders.
mk_invlists.pl: Add error check and die if fails
mktables: Add overload for '&=' on property objects
mktables: Add input error check and warning
mktables: Loop should begin at 0

This loop is supposed to flush all the input buffering for the fields of
UCD.txt, but skipped field 0, the name field.  This is not a problem
except for compiling very early Unicode versions where the final entry in
the file could be a real name.  Subsequent versions have the final entry
be for nameless private use code points, so this bug is not triggered
for them.
mktables: Extend Name_Alias property to early Unicode releases

This uses this property so that charnames can work on early Unicode
releases, by including all the aliases that were previously defined in
charnames until Unicode 6.1 started defining them itself.
mktables: remove now-always-true test

A previous commit causes the Name_Alias property to be defined in all
Unicode versions, so no longer have to test it.
mktables: White-space only

A previous commit removed the block this code was contained in, so can
outdent and reflow the comments to take up the full width available
mktables: Move assignment out of loop

This assignment only needs to be done once.
mktables: Suppress invalid warning on early Unicode releases

When a Unicode release is compile which doesn't have titlecasing the
table is created anyway, but is empty.  This suppresses the empty table
sanity check warning, since it's sane for this to be empty in those
versions
mktables: Fix for Unicode versions without fold, special casing

This code was supposed to work on early Unicode releases which did not
have the special casing and casefold .txt files in them, but was broken.
Processing is moved earlier to set these tables up before the loop that
populates the default mapping for all Unicode tables, so that that loop
will automatically process these as well.
mktables: Consolidate handling of Cased property

This moves all the handling dealing with Cased to one place, and fixes
it so it works properly when compiling Unicode versions without the
official Cased property.
mktables: Compile \w correctly on early Unicode versions

Early Unicode versions did not have the Connector_Punctuation property.
In those cases the underscore should still be part of \p{Word}.