Created basic ShaderNode class for #5
Refactored Shader classes and added new class Shader::Generic