Implement WGSL support for swizzled lvalues.

Assignments like `variable.rb = color.br;` are now supported.
WGSL does not support this natively; instead, we rewrite the
assignment as `variable = vec4<f32>(color.br, variable.ga).xzyw;`.
We can now successfully compile and validate all shared tests
beginning with the word "Swizzle."

Bug: skia:14082
Change-Id: I25ae5247be0d91ac4faf5d78286a461a85d1c699
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/706916
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
15 files changed