Fix gl settings to render color correctly

Surface normals needed to be normalized because we use glScale.
Unnormalized surface normals caused lighting calculations to blow up and
saturate RGB values. Lighting settings were also improved and tweaked.
Merge branch 'eric/shape-refactoring'