Work on unicode, started work on utf8 specific encodeing and decoding
using code from libutf8

since the libc encoding/decoding functions (mbrtowc/wcrtomb and friends)
work on arbitary character encodings and I only need utf8/32 support It
should be faster and eaiser to do the encoding and decoding stuff
internally, also knowing more about the internal workings of conversions
should help me to write things in a way more geared towards how I need
to use them rather than the generic interfaces presented by libutf8 and libc