controller: don't disconnect currently unused closure
engine-op: fix inverted status of _map_pb_ui_edit()
Add "reap" mechanism, marking obj's for garbage collection

This introduces a mechanism for queuing an object to be garbage
collected the next time rig_engine_garbage_collect() is called as well
as any objects owned by the given object.

This mechanism is use by simulator__load to ensure that all the objects
of an old ui can be garbage collected and unregistered before loading a
new ui.

This mechanism will also be required for any engine OP that is meant to
destroy something, so when UI logic deletes something then it will be
properly garbage collected.

This also updates the way that we apply operations in rig-engine-op.c to
replace apply_ctx->delete_object_cb with an unregister_id_cb instead.
The apply callbacks themselves will no be responsible for reaping
objects.  The unregster_id_cb is used by the frontend for potentially
unregistering temporary ids.
ui: print controllers/assets in rig_ui_print()
engine: resume edit ui on set
shell: Grab pointer on X11 when grabbing input

This adds a new rut_shell_grab_pointer() api that uses the extra
semantic information to start an explicit pointer grab if running on X11
so that we can continue to receive events when the mouse moves outside
our window, until all buttons have been released. The grab is implicitly
released when all buttons have been released so there's currently no api
for explicitly canceling a pointer grab.

Currently this new api is only used in rut-number-slider.c

Note: That this requires a patch to SDL so you need to build against the
rig branch of SDL at https://github.com/rig-project/sdl