[HLSL][SPIR-V] Implement vk::location for inputs (#169479)
This commit adds the support for vk::location attribute which can be
applied to input and output variables.
As in/inout parameters are not supported yet, vk::location on such
parameters is not tested.
As implemented in DXC, vk::location has the following rules:
- input and outputs are handled independently.
- input/output lowered to a SPIR-V builtins are not using the assigned
vk::location and thus ignored.
- input/output lowered to a Location decoration must either all have
explicit locations, or none. Mixing is not allowed (except with
builtins).