[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'm not so sure. The draw function already takes an Array of Ranges and returns an Array of Highlights. For a `drawAll` to be useful to the place it's been used, loading many annotations, it would be expecting an Array of Arrays of Ranges and would have to return an Array of Arrays of Elements. That may be getting a bit busy unnecessarily. @nickstenning clearly felt some desire to give the developer more control over how to optimize this, because he had options on the `UI.Highlighter` to control the chunk size and interval. I might rather let the developer do that if it fits their needs. For instance, other approaches might be to use `requestAnimationFrame`, some other async flow control library of choice, etc.

Do you think it's too onerous to push this up to the caller?