This needs spirv changes to make any tests pass, but this series is already long enough. Not sure what to do about initialisers; we can't use `DCL_IMMEDIATE_CONSTANT_BUFFER` because it emits a variable, and we are avoiding dropping things in the register structure. The `icb` objects the DXIL parser creates are currently not stored anywhere except the icb cache. Probably they should go in an array in `shader_desc`. Any thoughts @hverbeet @giomasce? Maybe @zfigura already has code for that change?