fix(web-mobile): media session never started on first play
The silent <audio> anchor that surfaces the OS/lock-screen media controls was
rendered by the mini-player, which returns null (and so mounts no DOM) whenever
nothing is playing. The one-time registration effect therefore captured a null
element and never re-ran, so playMediaAnchor() was a no-op on the very first
track โ the gesture that most needs it โ and Media Session never appeared.
Move ownership of the anchor into media-session-anchor.ts: it lazily creates a
persistent, self-appended <audio> the first time it's asked to play, so the
in-gesture start (playNow / resume / media keys) always has a real element to
kick, independent of React render timing. Drop the React-rendered <audio>, ref,
and registration; sync effect now just mirrors state. Also stop muting the
element (the clip is already silent) since a zero-volume element can suppress
Media Session in some browsers.