Add spec for encoded string and partial match

Extracted from #2253
Remove unneccessary sindex usage in String::character_index

This was causing the index variable to be increased twice in certain
loops, causing a wrong index to be returned. Looks like the additional
sindex is also not necessary, so remove that usage as well.

Fixes #2253
Set call frame before another case of potential internalization
Set call frame when checking async events