Support unicode combining characters

http://en.wikipedia.org/wiki/Combining_character

Closes #3945 
This kind of loop is duplicated a couple places, but for speed reasons, it seems better to inline it each time then add a `forEachCharacter` on `Token` that takes a callbacks since it is called in tight loops.