Added specularity

Cleaned up code and added specular lighting.
Refactored and commented code

Moved code into separate headers and cpp files. Global constants and
variables were moved into singleton objects Global and MatMath.