SPIR-V: Aggressively prune unreachable merge, continue target

More aggressively prune unreachable code as follows.
When no control flow edges reach a merge block or continue target:
- delete their contents so that:
  - a merge block becomes OpLabel, then OpUnreachable
  - a continue target becomes OpLabel, then an OpBranch back to the
    loop header
- any basic block which is dominated by such a merge block or continue
  target is removed as well.
- decorations targeting the removed instructions are removed.

Enables the SPIR-V builder post-processing step the GLSLANG_WEB case.
diff --git a/Test/baseResults/spv.for-notest.vert.out b/Test/baseResults/spv.for-notest.vert.out
index 36c4a96..c9d5b4c 100644
--- a/Test/baseResults/spv.for-notest.vert.out
+++ b/Test/baseResults/spv.for-notest.vert.out
@@ -38,5 +38,5 @@
                               Store 8(i) 19
                               Branch 10
               12:             Label
-                              Return
+                              Unreachable
                               FunctionEnd