R1: the GPU spike — epaint's frame in WebGL2, immediate and retained

tools/gpu-spike draws epaint's whole frame (tessellation-bench's Whole, now
exposing its atlas) with a one-shader WebGL2 renderer: `immediate`
re-tessellates and uploads the screen display list every frame, as egui did;
`retained` uploads the world scene once and draws it under a view uniform.
The page times forced frames by phase, then pans for three seconds under
requestAnimationFrame. Checked for correctness in headless Chrome (software
WebGL); the numbers are to be taken on the MBP.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DpzKyHQnAArB7auu1oujYH
