Fixed specular highlights. Some other nice improvements.

Fixed specular highlights. Some other nice improvements such as specular
color can be set per light, specular intensity can be set per light,
reflectivity per reflective surface can be set, etc... Also cleaned some
stuff up so the code looks a lot tidier now.