Move execution of InputDeviceObservers into input thread
To ensure that the messages about available input devices reach clients before respective input events and input device state events the InputDeviceObservers are now executed inside the same thread that dispatches the input events. Since downstream shells might also implement InputDeviceObservers, the existing behavior is kept due to a new wrapper around DefaultInputDeviceHub that runs inside the ServerActionQueue. Fixes: https://bugs.launchpad.net/bugs/1646375, https://bugs.launchpad.net/bugs/1646558.
Approved by mir-ci-bot, Alexandros Frantzis, Alan Griffiths.