Compare by character instead of by byte

kpeg mixes byte comparison with character comparison between get_byte,
match_string, and scan.  This may cause unexpected behavior.

Now get_byte returns a character instead of a byte (so π will be 960
instead of 207 then 128).  This name is misleading but compatibility
should be maintained.

Furthermore, get_byte now uses a cached string length instead of
recalculating it every time.  This results in a speedup of around 33%.