Critical fixes from deep review:
1. **Stack overflow prevention**: Moved BPM scratch buffers (br_buf, hr_buf)
from stack to static storage in both process_frame() and
update_multi_person_vitals(). Combined stack was ~6.5-7.5 KB of 8 KB
limit — now reduced by ~4 KB to safe margins.
2. **Tick-rate independence**: Post-batch yield now uses
pdMS_TO_TICKS(20) with min-1 guard instead of raw vTaskDelay(2).
Previously assumed 100Hz tick rate.
3. **EDGE_BATCH_LIMIT to header**: Moved from local const to
edge_processing.h #define for configurability.
Firmware builds clean at 843 KB.
Co-Authored-By: claude-flow <ruv@ruv.net>