Unicode collation algorithm
String comparison by collation as described in UTR #10
How variables are handled
Strength of comparison. For European languages, each strength roughly means as `Primary : Ignore accents and case `Secondary : Ignore case but accents are counted in. `Tertiary : Accents and case are counted in. For the case of `Shifted, `Shift_Trimmed, there is the fourth strength. `Quaternary : Variables such as - (hyphen) are counted in.
For locale, see [root:Locale].
locale is omitted, the standard UCA order is used.
prec is omitted, the maximum possible strength is used.
variable is omitted, the default of the locale
`Shifted) is used.
The meaning of the returned value is similar to Pervasives.compare
Binary comparison of sort_key gives the same result as
compare t1 t2 = Pervasives.compare (sort_key t1) (sort_key t2)
If the same texts are repeatedly compared,
pre-computation of sort_key gives better performance.