Implement ambient, diffuse and specular lighting with attenuation and gamma correction

- Model normals can now be calculated using the model vertices and indices
- Fixed shader error log not displaying correctly
- Added a program loader

Signed-off-by: thehutch <52d5ad14@opayq.com>