Changes:
1. Fix speed selector "off" state:
- `percentage` property returns 0 when fan is off
- `async_set_percentage()` calls `async_turn_off()` for 0%
- `async_turn_on()` handles percentage=0 as turn off
2. Add auto-power on:
- `async_set_percentage()` powers on fan if off when selecting speed
- `async_set_preset_mode()` powers on fan if off when switching modes
3. Enhance user experience:
- 0% in speed slider → Turns fan off
- Any speed selection when off → Auto powers on + sets speed
- Mode switch when off → Auto powers on + sets mode
- Works with range-based speed configs
- Each preset mode (e.g normal/sleep/baby) now supports independent speed settings
- Automatically sets fixed speed when switching to single-speed modes
- Maintains backward compatibility with existing configuration format
- Dynamic switching of speed configuration based on selected preset mode
The implementation allows for more intuitive control where different
operating modes can have different speed adjustment capabilities.