[glsl][ir] Create header section before preamble.

When emitting GLSL the `precision` modifiers and extensions need to be
emitted before the `struct`s. This means we need a header section to go
before the preamble section.

Bug: 42251044
Change-Id: I6c702955481f5665b1110eeb36ea1ecd1eb65411
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/205574
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/test/tint/builtins/gen/literal/log/697e1d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/697e1d.wgsl.expected.ir.glsl
index b8ad471..c96c5db 100644
--- a/test/tint/builtins/gen/literal/log/697e1d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/697e1d.wgsl.expected.ir.glsl
@@ -2,7 +2,6 @@
 precision highp float;
 precision highp int;
 
-
 void log_697e1d() {
   vec4 res = vec4(0.0f);
 }
@@ -20,6 +19,7 @@
 }
 #version 310 es
 
+
 struct VertexOutput {
   vec4 pos;
 };