- introduce an options pattern to create sensors. Workers can use `sensor.NewSensor` to create a sensor with whatever options are required.
- use new options pattern sensor creation in Linux sensor workers
- remove the sensor.Details interface, which was inflexible and unneeded. Replace with an exposed struct Entity which workers can use
- move request/response code out of sensor package and into hass package, which makes more sense
- controllers now have an ID
- remove Start/StopAll controller methods and just use Start/Stop
- alter linux workers to move more code into shared methods
- store D-Bus system/session bus connections in context
- store desktop portal value in context
- store session path in context
- inherit/use logger in context
- remove linux.SensorType iota in favour of a DisplayName field used to generate the Name and ID of a sensor
- move any functionality for using linux.SensorType into each sensor
- simplify some sensors to just use a plain linux.Sensor
- create custom reusable object for accessing a D-Bus property with its own get/set methods
- create custom reusable object for calling a method in D-Bus
- sue functional options for setting up a D-Bus watch
- actually ensure a watch is created for each method requested to be watched
- add validation for property, method and watch objects
- rework sensors using D-Bus to take advantage of new objects
- rewrite dbusx package so that methods either act on a particular bus or require a bus passed as a parameter
- don't store D-Bus in context
- define a D-Bus API which stores bus connections which can be retrieved by other functions
- rework the linux controller to store the D-Bus api and pass to sensor/MQTT workers
- rework the linux controller so it can satisfy the agent's SensorWorker and MQTTWorker interfaces
- New* worker creation functions now take a context, that can be used as part of initialisation
- in Linux location sensor, check if a client can be created first
- define an interface for updating sensors
- on Linux, define interfaces for different sensor update methods
- rewrite Linux sensor code to move update logic from individual sensors to share code through interfaces
- update device sensors to utilise sensor update interface
- add an "accent color" sensor, which retrieves the accent color of the desktop theme
- add a "color scheme type" sensor, which indicates whether a dark or light desktop theme is in use