internally use non-characters instead of PUA

Where we had previously used Unicode private-use characters U+F8F0 through
U+F8F4, we now use non-characters U+FDD0 through U+FDD4 because they're valid
for internal use and less likely to be used as input.