Refactor kana methods to use hash order in Language
Utilize one-pass replace in kana methods in Language

This should fix e.g. "nnya" being treated as
n + nya (んにゃ）, instead of nn + ya (んや）.
Add f-to-sokuon mapping in Language

This is so that e.g. ffu converted to "っふ"