Refactored the shader_program and shader_uniform_store code so that now the shader_uniform_store is a part of the shader_program and can only be created through it