Compare atoms by code points instead of raw bytes.
Compare atoms by code points instead of raw bytes.

The compare() method in AtomImpl is replaced by compareByCodePoint().
char_traits<>::compare() work in code-unit-based comparison. This will
produce a different ordering than code-point-based comparison when
UTF-16 is used, e.g. "\U00010000" is encoded to [0xd800, 0xdc00], which
is lexicographically less than [0xffff], so we get the non-sensual order
"\U00010000" < "\U0000ffff".

(Of course, this does not consider collation (e.g. "ö" < "p" in some
locale) or normalization (e.g. "á" == "a\u0301"). They should be
provided by separate functions for those who wants to treat
human-readable strings.)

miavisa/Mozart2-vm-old,ggutierrez/mozart2css