Move shader logic all together in ShaderProgram, various refactoring,
allow for multiple vbo rendering