Update ExplanationViewer's range highlighting to work correctly with unicode.

Scintilla's indexing always uses byte offsets, but IndexedString (and hence
CharacterLinks) uses whole character indexes (as this is the only way to be
independent of the encoding used). So, modify the highlighting code to find
the appropriate offset for the whole character indexes, and to then use that
offset for IndicatorFillRange().