Unicode: do not remove surrogates from char sets

For some reason removing them causes some tests to fail.  Also
it is not clear whether removing or leaving them is the better
option.
Unicode: add `set` and `str` combinators

They are implemented using `uutf`.  Later they could be
rewritten directly so that we do not depend on any
external library.