How do FreeRTOS task priorities and preemption work, and how does that affect responsiveness in embedded firmware?