When creating __cblayout
types we should use explicit padding instead of target layout types, as per llvm/wg-hlsl#311. This will force us to use explicit conversions between objects in cbuffers and those with C++ layouts, should clean up a number of issues where the backend fails to clean up layout differences, and avoids us needing to duplicate a lot of logic between the DirectX and SPIR-V backends.