feat(fan): allow fans to conditionally have preset mode.
Rather than just the preset_mode existing, check that it has modes as well.
This allows a config to conditionally enable presets, leaving none defined
if the model does not support them, reducing the number of config files
needed to cover variants of devices.
PR #4899