plchecker: fix invalid references to codepoints

Offsets passed to char_at are bytes, not codepoint indices.
Thus, it's possible to pass an index into the middle of a multibyte
character.
Hence, it's safer to use character-wise iterators when operating on
Unicode strings, what I do in this fix.
plchecker: find best corrections