Apply immutable-value optimization to compound constructors.

Previously, a compound constructor like `float4(1, 2, 3, 4)` would
be pushed onto the stack using one instruction per value. Now, we
create dedicated immutable-value slots for the compound value and
are able to push four slots at a time.

The code attempts to reuse immutable slots where possible, and can
even reuse immutable values from variables, but the deduplication
code isn't smart enough to do anything tricky like reordering the
slot layout to gain additional reuse.

In a followup CL, I will experiment with storing the data in a
more compact format (like uniforms).

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