The current code maintains separate data structures and lists for initial device enumeration. This is unnecessary as the main watcher loop ultimately pushes initial devices onto the main event list anyway. To that end, this MR: * Removes the `bluez_init_entry` struct and the `initial_{radio, device, gatt_{service, chars}}_list` lists in `bluez_watcher_ctx`. Newly detected objects are now directly pushed to the event list. * Factors the new object handling logic in `bluez_signal_handler` and `bluez_build_initial_device_lists` (now `bluez_enumerate_objects`) into a common function, `bluez_handle_new_object`. * Use libdbus' async callback methods to automatically perform initial device enumeration, instead of checking the status of the `GetManagedObjects` call on every iteration of the main loop. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10922