speaker: replace setTimeout with sim() tick (QuickJS has no setTimeout)
ac-native runs pieces under QuickJS which doesn't ship setTimeout.
Rewrite the 's' sweep to use sim() with a Date.now() step counter.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>