Specular and bump maps.

Finishing the existing specular implementation and adding handling for bump mapping.