Implement various light sources using polymorphism.

Light sources:
- Directional Lamp
- Point Lamp
- Point Lamp w/Attenuation
- Spherical Point Lamp
- Spot Lamp

Sample code chapter10-6 shows how the code can be used to implement
multiple light sources.