Serialize firmware calls via broker bus
Add a fw_bus that serialises kernel-affecting firmware calls through the
broker (a real Rockbox kernel thread) to avoid corrupting the global
__cores[0].running slot from non-firmware pthreads. Provide helpers
(send, send_and_wait, run_on_broker, take_receiver) and drain/execute
logic for the broker.
Route server handlers and settings/apply paths to the bus so playback,
playlist and settings operations run on the broker. Add safe guards in
the hosted path: hold pcm_play_lock during pcmbuf rebuild, add
audio_set_crossfade_safe (pause/resume around buffer remakes), and
yield briefly in halt_decoding_track for CODECS_STATIC. Also set TMPDIR
in the expo daemon to keep std::env::temp_dir() inside the app sandbox.