SSBOLayoutCase: Make proper use of array descriptors
Previously, the SSBO tests were using arrays of blocks in the shader but
declaring them as individual descriptors in the descriptor set layout.
This is in violation of the spec and was causing issues on some
implementations.
As a side-effect of this change, we now update most of the bindings in a
single update. The Vulkan spec allows descriptor writes that go over the
bounds of the current binding to spill into the next as long as the
bindings have the same type. This makes updating substantially simpler
especially when we have bindings with different numbers of descriptors.