Support unicode in common prefix and suffix

This commit decreases performance for these methods by around 5x in my
simple tests.
Step a rune at a time

This fixes broken runes in the string when some bytes in the rune is
equal but when the rune is different.