Unicode: extract case folding info from ucd

Case folding table still takes up too much space, but it
can be reduced further by using same tricks as in re2.

(see https://github.com/nelhage/re2/blob/master/re2/unicode_casefold.h)
Unicode: fix definition of character sets
Unicode: Fix bug in `compile`

Untranslated unicode code points were being passed
to `compile_1`.

Also, changed signature of `case_insens` back to
`Cset.t -> Cset.t` in preparation to implementing case, no_case
for Unicode.
Unicode: add `ascii` character set
Cset: add `mem_range` function
Unicode: generate case fold data as an *array*
Unicode: expose `group`, `no_group`, `nest`

Same as in `Re`.
Unicode: implement `case_insens`

The `case`, `no_case` now work with Unicode.  A more compact
encoding of the `Unicode_groups.foldcase` table will be introduced
later.