Implement fixed-value indexing into temporary values.

For instance, code like `mat3(x)[1]` is legal; it would synthesize
a temporary matrix and then extract its second vector (yielding
`vec3(0, x, 0)`).

We don't go to any special effort to make this work efficiently; we
push the entire expression to a scratch stack, extract out the part
we care about, then jettison the rest. This allows us to pass three
additional tests.

Change-Id: Ic8038fbcd3302f3a56c44e2779ca892c321887f0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/642116
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
4 files changed