libkworkspace: Avoid blocking calls in SessionManagement operations
It is important the app stays alive until the call has been fully dispatched, otherwise the call will not be completed.
As a temporary fix the calls were made blocking. This causes issues now that kwin can be invoking this from the krunner plugin.
Instead it is replaced with an event loop locker, so apps can use that to keep things alive implicitly. To ensure we don't reopen the original bug 432460 logout-greeter is ported away from calling quit, so the event loop locker is honoured.