rewrote everything!
string now work with utf-8, all operations base on wchar.h library functions and are therefore sensitive to locale configurations