logind: Return values from close_device and get_fd
libseat: Fix typo in doc string
Expose session ID in libseat API

This sends the seatd session ID to a seatd client, and exposes this in
the API.

For logind, this returns the VT to match what is used for VT switching.
meson: ignore 'man-pages' if 'server' is disabled

`seatd.1` is the only man page, so it's not necessary to install it or
require scdoc when the server is not built.
seatd: Tear down VT when disabled client closes

If a client closed while it was disabled, the VT would not be torn down.
If the user navigated back to the VT it belonged to, they would be

When a client is disabled, open the fd for the VT it belonged to and
perform regular teardown on it.
client: Replace pending_disable with state enum

This simplifies logic in seat handling.
seat: Remove unused arg from seat_deactive_device
logind: Send ReleaseControl when closing seat

This is not strictly speaking necessary as detaching from the bus should
trigger this automatically, but elogind apparently has issues with this.

Doing this explicitly does no harm, so let's just do that.
simpletest: Close fd after closing device
client: Fix typo in cr_pid usage
client: Use cr_pid if available

This is only available on FreeBSD 13, so test for that version.
client: Do not use SOL_SOCKET for LOCAL_PEERCRED

This is wrong, and leads to LOCAL_PEERCRED being interpreted as
SO_DEBUG. 0 should be used instead.

See: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=246189.
libseat/backend/logind: stop waiting for CanGraphical

Upstream says compositors should wait for DRM nodes using udev instead.
logind: switch_session should return 0 on success

It currently returned -1 on failure and 1 on success. The API is
intended to return -1 on failure and 0 on success, so fix that.
terminal: Improve logging
client: More robust handling of client links
poller: Retry poll immediately on EINTR

There is nothing for us to dispatch unless we wake on an fd, so just
retry poll if it fails with EINTR instead of doing a full dispatch loop.
libseat: log error when failing to open socket

The most common pain point I've seen with people trying out seat is
forgetting to add themselves to whatever group the distro has chosen
to own the socket.

Logging this error and path of the socket should make it easier to tell
why things aren't working.
ci: Clean up build manifests
Bump version to 0.4.0
readme: Update mailing list link