* Add support for options to airq integration
Expose to the user the following configuration:
1. A choice between fetching from the device either:
a. the averaged (previous and the new default behaviour) or
b. noisy momentary sensor reading
2. A toggle to clip (spuriously) negative sensor values (default
functionality, previously unexposed)
To those ends:
- Introduce an `OptionsFlowHandler` alongside with a listener
`AirQCoordinator.async_set_options`
- Introduce constants to handle represent options
- Add tests and strings
* Drop OptionsFlowHandler in favour of SchemaOptionsFlowHandler
Modify `AirQCoordinator.__init__` to accommodate the change in option
handling, and drop `async_set_options` which slipped through the
previous commit.
* Ruff formatting
* Reduce data sharing between ConfigFlow and DataUpdateCoordinator
Instead of fetching device information from the device once in
`ConfigFlow` and then piping it through in `ConfigEntry.data`,
only use as much as needed in `ConfigFlow.async_step_user`, then fetch
again in `AirQCoordinator._async_update_data` if a key is missing.
Additionally, factor `AirQCoordinator` out into a sumbodule.
Add a simple test for `AirQCoordinator.device_info` update.
Positive side effect: `AirQCoordinator.device_info` is
updated explicitly, instead of dumping the entire content of (a fully
compatible) `TypedDict`, retrieved from `aioairq`.
* Remove tests ill-suited to this PR
`test_config_flow.test_duplicate_error` slipped through by mistake,
while `test_coordinator.test_fetch_device_info_on_first_update` may need
a more thoroughly suite of accompanying tests
* Ignore airq/coordinator.py
...newly separated from airq/__init__.py, that's already in this list
* Reorder files alphabetically