Add a code path for decoding CESU-8 and its ilk. Fixes #3.
Build the data file in a separate script
compatibility.py puts Python version checks in one place

It also distinguishes narrow vs. wide builds as a separate issue from
Python 2 vs. Python 3, and provides a workaround for unichr() on narrow
builds.
Fix logic that finds segments of text to decode and join together.

Fixes #6, by making it utterly predictable what will happen to a sequence
of greater than 2**16 characters. It will go through all the fixes
except the one that figures out if it's in the wrong encoding, because
that's the complicated one that needs more than linear time.

This is also a fix to bugs that hadn't been discovered yet, in that it
would simply break up text into lines at the wrong locations.
Fix regression: we want to be able to recompose diacritics

If we get the encoding of a string in NFD form, it very well may have a
floating diacritical mark next to a Latin letter, so fix the assumption
that we only cared about other kinds of letters.