test_backprop: remove --learn_caps option

It was causing no end of confusion for the next step (utf-8 support),
and wasn't actually all that interesting in the end.
test_backprop: utf-8 aware prediction, auto alphabet selection

 --find-alphabet-threshold=1e-4 will set the alphabet to be all characters
that appear more than once every 10000 characters.

--case-sensitive, --case-insensitive switch case sensitivity.
Insensitivity, which was previously the only way, is the default.

--utf8, --no-utf8. With --utf8, multi-byte utf-8 unicode characters are
decoded into single code points. With --no-utf8 (default) each byte is
predicted separately.

--collapse-space, --no-collapse-space. With --collapse-space (the
default) runs of whitespace are converted into a single space.
utf8.h: add tests, fix bugs, tidy up

The worst bug was that utf8 was missing the most compact conanical
encoding for most 3 bytes characters.
test_backprop: don't allow metadata separator in alphabet

This is bad, in that it breaks test_backprop for generalised
bytestream prediction. But it is fine for text.

The better thing to do would be to have an adaptive spearator in
metadata.
charmodel: some tests and a fix thereby derived

The tests only test finding the alphabet in some cases.

The fix relates to finding the correct (highest loser) representative
for the collapsed characters.
scripts/find-character-set: update with case sensitivity

This is useful for generating/validating test results from
`test/test_charmodel`.
test_utf8: file header, with encoding line
charmodel: improve find_alphabet's utf-8 awareness

It was just pretending you wouldn't use non-ascii without the utf8 flag.
charmodel: ceil() is correct for threshold int, not round()
find-character-set: improve non-utf-8 handling, with utf-8 flag
test/test_charmodel now tests utf-8 alphabets