The new system is slightly less flexible, but the code and lua
definitions is now a lot simpler and easier to understand.
In fact the old lua definition was not actually correct.
It is likely that existing configs require not/minimal tweaks to work
again.
It now has to be called 'setup', this makes it possible to just
include the table as a whole in devices and it will automatically call
the correct function.
Instead the client is now created on the rust side based on the config.
Devices that require the mqtt client will now instead need to be
constructor using a function. This function receives the mqtt client.
In preparation of changes to the mqtt client the config is rewritten to
use a device creation function for devices that need the mqtt client.
This also fixes a but where hallway_top_light was not actually added to
the device manager.
Due to changes made in mlua the new scheduler is much simpler. It also
had no real business being part of the device manager, so it has now been
moved to be part of the returned config.