MSL does not support value semantics for arrays (sigh), so we need to force constant references and deal with copies if we have a different address space than what we end up guessing.
Code fixes from review. Refactor MSL tests back to using the SPIRV-Tools and glslang loaded by checkout_glslang_spirv_tools.sh.