Fix ISR/SPI mutex crash on ESP32/NRF52 in modem drivers
DIO0 ISRs were calling SPI.beginTransaction() directly, which takes a FreeRTOS mutex — illegal from interrupt context and causes a panic when the SPI bus is held by LittleFS during microReticulum path persistence I/O.
Replaced direct ISR dispatch with a volatile flag checked in the main loop.
- the ISR sets _dio0_pending
- the main loop polls handleDio0IfPending() each iteration and calls handleDio0Rise() from safe task context
Applied to sx126x, sx127x, and sx128x. SPI.usingInterrupt/notUsingInterrupt calls in onReceive() are skipped on ESP32/NRF52 since the ISR no longer touches the SPI bus. sx128x preserves Errata 16.1 RX re-entry logic.