fixed epsilon issue

Previously epsilon difference to fix floating point error was based on
shrinking the distance from the intersection point to the light source.
Now epsilon difference is calculated by moving the intersection point
an epsilon away from the surface of the object based on the object
normal.