fail sooner if bad value passed to GraphemeSplit.
Ideally, we'd do this in more of a ducktypey way, but once it
gets down into PopGrapheme, it throws confusing errors
use yields when getting list of changes for faster feedback
more Western-specific stuff