Updated mapping and better ん and sokuon handling

- Cleaned up a couple of other isChar() functions to have them request a
char intead of a String
- Fixed a couple of errors related to substring() that were causing
stack overflows (the final parameter is an end point, not a length!)
- Added "xtsu"->"っ" (sokuon) mapping for improved support of romaji
conversion schemes
- Added some comments in palces where things might not be
self-explanatory
- Removed _isCharNotKana() function because it's the same as
!_isCharKana()