Move deferred vblank events to separate drm_vblank_deferred list

It was still possible for nested xorg_list_for_each_entry_safe loops
to occur over the drm_vblank_signalled list, which could mess up that
list. Moving deferred events to a separate list allows processing the
drm_vblank_signalled list without xorg_list_for_each_entry_safe.

v2:
* Refactor drm_handle_vblank_signalled helper function, less code
  duplication => better readability (Alex Deucher)

Bugzilla: https://bugs.freedesktop.org/108600
Acked-by: Alex Deucher <alexander.deucher@amd.com>
11 jobs for amdgpu_drm_queue_alloc-is_flip in 3 minutes and 33 seconds (queued for 1 minute and 13 seconds)
Status Job ID Name Coverage
  Build
passed #45042
xserver-1.13

00:00:25

passed #45043
xserver-1.14

00:00:25

passed #45044
xserver-1.15

00:00:26

passed #45045
xserver-1.16

00:00:27

passed #45046
xserver-1.17

00:00:26

passed #45047
xserver-1.18

00:00:26

passed #45048
xserver-1.18-clang

00:00:29

passed #45049
xserver-1.19

00:00:26

passed #45050
xserver-1.19-clang

00:00:29

passed #45040
xserver-1.20

00:00:36

passed #45041
xserver-1.20-clang

00:00:29