Screensaver was consuming ~8% CPU due to ControlFlow::Poll rendering
as fast as possible. Switch to WaitUntil with configurable FPS cap.
Blank and image screensavers auto-cap at 2fps since they have no
animation, reducing CPU usage to near zero.
- introduce Color struct to reduce argument count in canvas drawing functions
- remove unused write_to method
- use is_multiple_of() per clippy suggestion