Updating Unicode versions (notes on the 10.0.0-18.0.0 updates):

1. Download ucd.zip for the version to update to, along with UCA's
   allkeys.txt and CollationTest.zip, and confusables.txt from
   security; replace all files in tools-for-build/ and tests/data/
   with the corresponding versions.

   (See tools-for-build/update-unicode-datafiles.sh)

2. Look at the data files, and adjust tools-for-build files:

   - more-ucd-consts.lisp-expr: for major Unicode versions, scripts
     are likely to have been added.  Minor versions might extend
     various other classes.

   - ucd.lisp: new properties in PropList.txt or
     DerivedNormalizationProbs.txt will need to be added to
     slurp-proplist.

   - unicode-phash.lisp: reset this file to be empty (0-length); the
     build process will populate it with new perfect hash data for the
     new Unicode databases.

3. Try to build.

4. Run tests.  Expect failures:

   a. failures in unicode-properties.pure.lisp

      - a failure in :BIDI-CLASS might mean that the unallocated
        character properties have changed.  Look at
        DerivedBidiClass.txt and compare the ranges documented in the
        header with ucd.lisp `unallocated-bidi-class`.

      - failures in :GRAPHEME-BREAK-CLASS and :WORD-BREAK-CLASS come
        from the change in the breaking algorithm.  The major change
        comes from handling emoji in a more principled way, but this
        involves us needing to parse and preserve emoji data, so add
        emoji-data.txt from UTS 51.  There are also more minor
        changes: some characters added to the explicit list of
        :aletter in WORD-BREAK-CLASS, and the new :wsegspace class.
        Details in UAX 29.

   b. failures in unicode-breaking.pure.lisp

      - failures in :GRAPHEME-BREAKING / :WORD-BREAKING /
        :LINE-BREAKING comes from needing to update those breaking
        algorithms for the new classes, and the refinements they
        bring.  Grapheme- and word-breaking is in UAX 29;
        line-breaking is UAX 14.

   c. failures in unicode-collation.pure.lisp

      - sometimes new scripts get implicit collation key weights, or
        existing scripts have new blocks added.  Supporting this
        involves changing the else branch in COLLATION-KEY in
        target-unicode.

5. Build but turn off the :sb-unicode feature: use the
   --without-sb-unicode flag to make.sh.  Run tests again to verify that
   the tests are resistant to this build option.