[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.
This block belongs back in a highlighter.drawMany() method. This glue code shouldn't be concerned with the performance of rendering many highlights. By putting it back into the highlighter module anyone wishing to render multiple annotations gets the benefits of this code without having to re-implement it.