Also make it possible to set session variables using PAM rather than Bash.
This adds a `graphical-session-pre` target for things that need to run just before the main session starts. Also adds a loop during shutdown that waits until all deactivating units are gone. Inspired by <https://youtu.be/hq18daxTkLA>.
Also make sure graphical-session.target is generated.