WIP Add highlights

Refactor the decoration storage.

More to come...
Could we filter the decorations at the last possible moment in their respective components rather than using a temp object? What I mean is, gutter would get all decorations by screen row, then for each one ensure it had the correct type.