Ingest the OBS plugin's fragmented MP4 push, signed as-is by muxl master
POST /api/ingest/client-configuration answers the plugin's GoLiveApi-shaped configuration request: a bad stream key comes back as a status error the plugin shows, a good one gets the FMP4 ingest endpoint. No encoder configurations yet, so the plugin keeps OBS's own encoders. POST /api/ingest/fmp4/:key takes the push through the same path as the /live route (ban check, then a detached worker or in-process ingest), but with a new fmp4-direct transport that hands the body straight to muxl's per-segment signer instead of the GStreamer demux/remux graph. That keeps every track the client sends, which multitrack audio and video will need. The signer's event drain is shared between both paths now, and segment tracks are concatenated in numeric track-id order (the string sort put track 10 before track 2). `streamplace e2e --ingest none` starts the harness without its WHIP loop and prints STREAM_KEY, for pushing from OBS.