add a UTF8 character iterator

this speeds up font rendering since LuaJIT doesn't have to use
the interpreter for string.gsub(), which was used before