Vulkan uses SPIR-V modules which can be specialized so there has to be a
way to keep the module around. A module can also contain multiple shader
stages. The abstraction for individual stages with the Shader class is
outdated and has been replaced with Module.
GLSL code is stored in the Module in combined form and split into stages
when loaded to a Program.