When applied, this patch adds the option to wait after a DRM device change uevent
for another identical one in order to avoid monitor rearrangement due to a monitor
disconnecting and reconnecting from the implementation of DisplayPort's deep sleep
"feature". This is locked behind a new environment variable due to the 1 second delay
that occurs to wait for a second event, but can be enable by setting
WLR_RAPID_HOTPLUG_PREVENT to 1.
libseat provides all session functionality, so there is no longer need
for a session backend abstraction. The libseat device ID, seat handle
and event loop handle are moved to the main wlr_session and wlr_device
structs.