Preliminary (but working) UTF-8 support.

I am yet unsure what things it could break but I am confident this is good base to work on. If anything, one can easily simple change decoder to different one.