Textures working & Basic lighting

Fixed: Upside down textures - OpenGL expects images to begin from the
bottom left, but PNG stores it from the top left.
Winding order was weird. Rewrote the Cube class to correct its winding
order and UV coordinates.
Basic lighting added to test the normals.