[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.
It is an acceptable signature. I see the argument. I'm not committed yet.