wlr_signal_emit_final is conceptually similar to wl_signal_emit_mutable
(i.e., our old wlr_signal_emit_safe), but instead of running all
listeners that were added at the time the signal emit started, we run
until the list is empty, removing entries as we go along.
This ensures that newly added signals are run all the same.
The documentation for wayland-server.h says:
> Use of this header file is discouraged. Prefer including
> wayland-server-core.h instead, which does not include the server protocol
> header and as such only defines the library PI, excluding the deprecated API
> below.
Replacing wayland-server.h with wayland-server-core.h allows us to drop the
WL_HIDE_DEPRECATED declaration.