Changes:
1. Modified create_from_mqtt to parse first_frame_time from MQTT data
2. Removed duration_minutes processing logic
3. Set duration_ms=None and last_frame_time=None on alarm creation
4. Updated _determine_alarm_level to handle duration_ms=None (returns level 2 for leave_post)
This ensures alarms are created with status=NEW and no duration/end time,
which will be populated later when the alarm is resolved.
Test: test_alarm_create_no_duration.py validates the new behavior.
Related: Task 2 of alarm status management fix
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>