Save the correct logind cookie when perforing the system-wide inhibit

It seem we need to use g_dbus_proxy_call_with_unix_fd_list_sync() to actually
get the FD number now. This is also the method gnome-session uses.
Actually inhibit logind when the transaction can't be cancelled

To do this we have to proxy the allow-cancel state up to the scheduler, and then
if any running tasks cannot be cancelled we take the logind inhibit.

This also means making the initial and final allow-cancel states sane so that
the inihibit is registered when required, and also disposed of if not done so
manually.

This commit also unties the confusion between "locked" and "allow-cancel" that
existed in multiple places.
Backends should use 'allow-cancel' for things actions that cannot be cancelled
manually (nor will be the system be allowed to shutdown) and 'locked' for where
the package cache is shared and cannot be used by other tools.