Added the root surface as a member to the IntersectionData (for recursive calls)
Removed support for the trace() call.  Material will now act as a programmable tracer.
Added intersection tests to composite surfaces