Refactored evaluation of SDF function

Instead of returning a scalar, we added a second evaluation method that
reports the 'closest' primitive node as well. 'closest' in this case
works well when being evaluating the SDF near a surface as this is the
case in raytracing.

The new return method will allow raytracing algorithms to report the
node that is closest to the intersection. This info can be used for
node specific shading.