Implementing ShaderProgram copy and link
Renaming function
Implementing ShaderProgram::validate()