find-character-set: try to find 8-bit character sets

This is basically a disaster, because the Python 3 bytes type can't do
things like .lower() and .split(), while the string type doesn't seem
to have an encoding that doesn't assign case to arbitrary high codes.

You can't read an 8 bit string as ascii, so you have to read it as
some encoding with full byte coverage -- for example "mac_roman". The
mac-roman encoding uses \0x80 for Ä and \0x8a for ä. Then .lower()
ends up converting \0x80 to \0x8a, which is not wanted.
test_charmodel: finding alphabet in utf-8 parsed as bytes

Fiddly work that turned out to find no bugs.
utf8: renaming string<-->codepoint convertors
charmodel: digit and letter adjustments for find_alphabet

Also, test with decomposed UTF-8, and rename alphabet tests to
test_charmodel_alphabet.
test_backprop: use digit and alpha adjustments