This will work with Unicode strings, using a technique called "case-folding" to handle the vast majority
of case-sensitive human languages regardless of system locale. It can deal with expanding values: a
German Eszett character can compare against two ASCII 's' chars and be considered a match, for example. A
notable exception: it does not handle the Turkish 'i' character; human language is complicated!
Depending on your platform, "wchar_t" might be 2 bytes, and expected to be UTF-16 encoded (like Windows),
or 4 bytes in UTF-32 format. Since this handles Unicode, it expects the string to be well-formed and not
a null-terminated string of arbitrary bytes. Characters that are not valid UTF-16 (or UTF-32) are treated
as Unicode character U+FFFD (REPLACEMENT CHARACTER), which is to say two strings of random bits may turn
out to match if they convert to the same amount of replacement characters.
Note that while this function might deal with variable-sized characters, maxlen specifies a _wchar_
limit! If the limit lands in the middle of a multi-byte UTF-16 sequence, it may convert a portion of the
final character to one or more Unicode character U+FFFD (REPLACEMENT CHARACTER) so as not to overflow a
buffer. maxlen specifies a maximum number of wchar_t values to compare; if the strings match to this
number of wchar_t (or both have matched to a null-terminator character before this number of bytes), they
will be considered equal.