bug 14014: Fill out support for VkShaderModule

Updated tests and demos to properly use VkShaderModule.
Add support to shader_checker for shader module.
Doesn't do anything with the pName parameter.
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 4aa594b..16b0fa9 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -1015,34 +1015,13 @@
     err = vkCreatePipelineLayout(m_device->device(), &pipeline_layout_ci, &pipeline_layout);
     ASSERT_VK_SUCCESS(err);
 
-    size_t shader_len = strlen(bindStateVertShaderText);
-    size_t codeSize = 3 * sizeof(uint32_t) + shader_len + 1;
-    void* pCode = malloc(codeSize);
-
-    /* try version 0 first: VkShaderStage followed by GLSL */
-    ((uint32_t *) pCode)[0] = ICD_SPV_MAGIC;
-    ((uint32_t *) pCode)[1] = 0;
-    ((uint32_t *) pCode)[2] = VK_SHADER_STAGE_VERTEX;
-    memcpy(((uint32_t *) pCode + 3), bindStateVertShaderText, shader_len + 1);
-
-    const VkShaderCreateInfo vs_ci = {
-        .sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO,
-        .pNext = NULL,
-        .module = VK_NULL_HANDLE,
-        .name = "main",
-        .codeSize = codeSize,
-        .pCode = pCode,
-        .flags = 0,
-    };
-    VkShader vs;
-    err = vkCreateShader(m_device->device(), &vs_ci, &vs);
-    ASSERT_VK_SUCCESS(err);
+    VkShaderObj vs(m_device, bindStateVertShaderText, VK_SHADER_STAGE_VERTEX, this);
 
     const VkPipelineShaderStageCreateInfo pipe_vs_ci = {
         .sType                = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
         .pNext                = NULL,
         .stage                = VK_SHADER_STAGE_VERTEX,
-        .shader               = vs,
+        .shader               = vs.obj(),
         .linkConstBufferCount = 0,
         .pLinkConstBufferInfo = NULL,
         .pSpecializationInfo  = NULL,
@@ -1298,33 +1277,13 @@
     err = vkCreatePipelineLayout(m_device->device(), &pipeline_layout_ci, &pipeline_layout);
     ASSERT_VK_SUCCESS(err);
 
-    size_t shader_len = strlen(bindStateVertShaderText);
-    size_t codeSize = 3 * sizeof(uint32_t) + shader_len + 1;
-    void* pCode = malloc(codeSize);
-
-    /* try version 0 first: VkShaderStage followed by GLSL */
-    ((uint32_t *) pCode)[0] = ICD_SPV_MAGIC;
-    ((uint32_t *) pCode)[1] = 0;
-    ((uint32_t *) pCode)[2] = VK_SHADER_STAGE_VERTEX;
-    memcpy(((uint32_t *) pCode + 3), bindStateVertShaderText, shader_len + 1);
-
-    const VkShaderCreateInfo vs_ci = {
-        .sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO,
-        .pNext = NULL,
-        .module = VK_NULL_HANDLE,
-        .name = "main",
-        .codeSize = codeSize,
-        .pCode = pCode,
-        .flags = 0,
-    };
-    VkShader vs;
-    err = vkCreateShader(m_device->device(), &vs_ci, &vs);
+    VkShaderObj vs(m_device, bindStateVertShaderText, VK_SHADER_STAGE_VERTEX, this);
 
     const VkPipelineShaderStageCreateInfo pipe_vs_ci = {
         .sType  = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
         .pNext  = NULL,
         .stage                = VK_SHADER_STAGE_VERTEX,
-        .shader               = vs,
+        .shader               = vs.obj(),
         .linkConstBufferCount = 0,
         .pLinkConstBufferInfo = NULL,
         .pSpecializationInfo  = NULL,
@@ -1782,34 +1741,13 @@
     err = vkCreatePipelineLayout(m_device->device(), &pipeline_layout_ci, &pipeline_layout);
     ASSERT_VK_SUCCESS(err);
 
-    size_t shader_len = strlen(bindStateVertShaderText);
-    size_t codeSize = 3 * sizeof(uint32_t) + shader_len + 1;
-    void* pCode = malloc(codeSize);
-
-    /* try version 0 first: VkShaderStage followed by GLSL */
-    ((uint32_t *) pCode)[0] = ICD_SPV_MAGIC;
-    ((uint32_t *) pCode)[1] = 0;
-    ((uint32_t *) pCode)[2] = VK_SHADER_STAGE_VERTEX;
-    memcpy(((uint32_t *) pCode + 3), bindStateVertShaderText, shader_len + 1);
-
-    const VkShaderCreateInfo vs_ci = {
-        .sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO,
-        .pNext = NULL,
-        .module = VK_NULL_HANDLE,
-        .name = "main",
-        .codeSize = codeSize,
-        .pCode = pCode,
-        .flags = 0,
-    };
-    VkShader vs;
-    err = vkCreateShader(m_device->device(), &vs_ci, &vs);
-    ASSERT_VK_SUCCESS(err);
+    VkShaderObj vs(m_device, bindStateVertShaderText, VK_SHADER_STAGE_VERTEX, this);
 
     const VkPipelineShaderStageCreateInfo pipe_vs_ci = {
         .sType                = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
         .pNext                = NULL,
         .stage                = VK_SHADER_STAGE_VERTEX,
-        .shader               = vs,
+        .shader               = vs.obj(),
         .linkConstBufferCount = 0,
         .pLinkConstBufferInfo = NULL,
         .pSpecializationInfo  = NULL,
@@ -1902,29 +1840,6 @@
     err = vkCreatePipelineLayout(m_device->device(), &pipeline_layout_ci, &pipeline_layout);
     ASSERT_VK_SUCCESS(err);
 
-    size_t shader_len = strlen(bindStateVertShaderText);
-    size_t codeSize = 3 * sizeof(uint32_t) + shader_len + 1;
-    void* pCode = malloc(codeSize);
-
-    /* try version 0 first: VkShaderStage followed by GLSL */
-    ((uint32_t *) pCode)[0] = ICD_SPV_MAGIC;
-    ((uint32_t *) pCode)[1] = 0;
-    ((uint32_t *) pCode)[2] = VK_SHADER_STAGE_VERTEX;
-    memcpy(((uint32_t *) pCode + 3), bindStateVertShaderText, shader_len + 1);
-
-    const VkShaderCreateInfo vs_ci = {
-        .sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO,
-        .pNext = NULL,
-        .module = VK_NULL_HANDLE,
-        .name = "main",
-        .codeSize = codeSize,
-        .pCode = pCode,
-        .flags = 0,
-    };
-    VkShader vs;
-    err = vkCreateShader(m_device->device(), &vs_ci, &vs);
-    ASSERT_VK_SUCCESS(err);
-
     VkPipeline badPipeline = (VkPipeline)0xbaadb1be;
     //err = vkCreateGraphicsPipeline(m_device->device(), &gp_ci, &pipeline);
     ASSERT_VK_SUCCESS(err);
@@ -2007,34 +1922,13 @@
     err = vkCreatePipelineLayout(m_device->device(), &pipeline_layout_ci, &pipeline_layout);
     ASSERT_VK_SUCCESS(err);
 
-    size_t shader_len = strlen(bindStateVertShaderText);
-    size_t codeSize = 3 * sizeof(uint32_t) + shader_len + 1;
-    void* pCode = malloc(codeSize);
-
-    /* try version 0 first: VkShaderStage followed by GLSL */
-    ((uint32_t *) pCode)[0] = ICD_SPV_MAGIC;
-    ((uint32_t *) pCode)[1] = 0;
-    ((uint32_t *) pCode)[2] = VK_SHADER_STAGE_VERTEX;
-    memcpy(((uint32_t *) pCode + 3), bindStateVertShaderText, shader_len + 1);
-
-    const VkShaderCreateInfo vs_ci = {
-        .sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO,
-        .pNext = NULL,
-        .module = VK_NULL_HANDLE,
-        .name = "main",
-        .codeSize = codeSize,
-        .pCode = pCode,
-        .flags = 0,
-    };
-    VkShader vs;
-    err = vkCreateShader(m_device->device(), &vs_ci, &vs);
-    ASSERT_VK_SUCCESS(err);
+    VkShaderObj vs(m_device, bindStateVertShaderText, VK_SHADER_STAGE_VERTEX, this);
 
     const VkPipelineShaderStageCreateInfo pipe_vs_ci = {
         .sType                = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
         .pNext                = NULL,
         .stage                = VK_SHADER_STAGE_VERTEX,
-        .shader               = vs,
+        .shader               = vs.obj(),
         .linkConstBufferCount = 0,
         .pLinkConstBufferInfo = NULL,
         .pSpecializationInfo  = NULL,