xfree86: Call ScreenInit for protocol screens before GPU screens

During startup, the xfree86 DDX's InitOutput() calls PreInit for
protocol screens first, and then GPU screens. On teardown, dix_main()
calls CloseScreen in the reverse order: GPU screens first starting with
the last one and then working backwards, and then protocol screens also
in reverse order.

InitOutput() calls ScreenInit in the wrong order: for GPU screens first and then
for protocol screens. This causes a problem for drivers that have global state
that is tied to the first screen that calls ScreenInit.

Fix this by simply re-ordering the for loops to call PreInit for
protocol screens first and then for GPU screens second.

(cherry picked from commit e5e9a8ca)
3 jobs for agoins-prime-fixes-1.20 in 7 minutes and 46 seconds (queued for 9 seconds)
Status Job ID Name Coverage
  Docker Image
passed #939708
debian-testing

00:00:32

 
  Build And Test
passed #939709
autotools-build-and-test

00:05:42

passed #939710
meson-build-and-test

00:01:31