By making ChanX_UTF be based off ChanX<UTF32>, ChanX<UTF16> *and* ChanX<UTF8> then a lot of things become easier.