tests: Rework VkShaderObj guts to keep whole createinfo

This looked like a half-finished refactoring -- we had the createinfo
object, but we weren't actually using it for anything. Use its fields
instead of loose members for name, etc.
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 91a7b81..61e14cd 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -1067,14 +1067,7 @@
 VkIndexType VkIndexBufferObj::GetIndexType() { return m_indexType; }
 
 VkPipelineShaderStageCreateInfo VkShaderObj::GetStageCreateInfo() const {
-    VkPipelineShaderStageCreateInfo stageInfo = {};
-
-    stageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
-    stageInfo.stage = m_stage;
-    stageInfo.module = handle();
-    stageInfo.pName = m_name;
-
-    return stageInfo;
+    return m_stage_info;
 }
 
 VkShaderObj::VkShaderObj(VkDeviceObj *device, const char *shader_code, VkShaderStageFlagBits stage, VkRenderFramework *framework,
@@ -1083,12 +1076,17 @@
     std::vector<unsigned int> spv;
     VkShaderModuleCreateInfo moduleCreateInfo;
 
-    m_stage = stage;
     m_device = device;
-    m_name = name;
+    m_stage_info.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
+    m_stage_info.pNext = nullptr;
+    m_stage_info.flags = 0;
+    m_stage_info.stage = stage;
+    m_stage_info.module = VK_NULL_HANDLE;
+    m_stage_info.pName = name;
+    m_stage_info.pSpecializationInfo = nullptr;
 
     moduleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
-    moduleCreateInfo.pNext = NULL;
+    moduleCreateInfo.pNext = nullptr;
 
     framework->GLSLtoSPV(stage, shader_code, spv);
     moduleCreateInfo.pCode = spv.data();
@@ -1096,6 +1094,7 @@
     moduleCreateInfo.flags = 0;
 
     err = init_try(*m_device, moduleCreateInfo);
+    m_stage_info.module = handle();
     assert(VK_SUCCESS == err);
 }