glsl2: Add constant propagation.

Whereas constant folding evaluates constant expressions at rvalue
nodes, constant propagation tracks constant components of vectors
across execution to replace (possibly swizzled) variable dereferences
with constant values, triggering possible constant folding or reduced
variable liveness.
diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index e93c2f5..52c9322 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -1296,6 +1296,7 @@
 	 progress = do_dead_code_local(ir) || progress;
 	 progress = do_dead_code(ir) || progress;
 	 progress = do_tree_grafting(ir) || progress;
+	 progress = do_constant_propagation(ir) || progress;
 	 progress = do_constant_variable(ir) || progress;
 	 progress = do_constant_folding(ir) || progress;
 	 progress = do_algebraic(ir) || progress;