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.
3 jobs for fix-gpuscreen-screeninit-order in 9 minutes and 16 seconds (queued for 2 minutes and 53 seconds)
Status Name Job ID Coverage
  Docker Image
passed debian-testing #938962

00:00:48

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

00:05:42

passed meson-build-and-test #938964

00:02:44