Avoid painting unchanged scene layers
Currently when we move the mouse the one render loop triggers a repaint. When the cursor layer needs a new update we end up in the compositor repainting the main content.
Even though painting should mostly no-op it still goes through all existing items and effects to collect damage, still potentially making the GL context current which could stall. A waste when we know we haven't got anything to do. It's enough to cause noticable mouse lag on some hardware.
In terms of longer term planning, building on this, we need to split RenderLoop into the part that happens on the output, and a thin wrapper round that with the journal that triggers on a per-layer basis.