[WIP] Simplify UI.Highlighter API

Rather than working with annotation objects, the `UI.Highlighter`
component receives ranges directly and returns highlights. It is
now the job of the caller to determine what to do with those
highlights and when to undraw/redraw them.
I think it should definitely be using `requestAnimationFrame`. I'm pretty sure that method wasn't very widely supported (if it even existed) when the code was originally written.

> Do you think it's too onerous to push this up to the caller?

I look at this file and what it's doing and this particular block of code looks completely out of place to me, which is a general indication that it should be moved either down into the module or into some kind of helper function.