C++ UTF-8 and UTF-16 string library