Add a rough implementation of shader factory
Make ShaderManager use Core::Shader, Core::ShaderFactory
Add test ShaderFactoryTest