Record more debug info for PathTracer

For debug level 2, record radiance and throughput separately also.

Feature-End: record-debug-info
Add Disk shape and Cornell box scene with disk light

Feature-Start: test-illuminance-scenes
Add disk irradiance scene with a known irradiance value
Add square irrandiance scene with a known irradiance value

Feature-End: test-illuminance-scenes
Add sphere to Cornell box scene

Feature-Start: microfacet-material
Implement microfacet material

Also add some needed vector and float32 utility functions.

Make sphere in Cornell box scene use MicrofacetMaterial.

Feature-End: microfacet-material
Add test scene for multiple importance sampling

Feature-Start: mis
Add corresponding pdf functions for sampling functions
Add ComputePdfFromPoint() function to Shape
Implement ComputePdfFromPoint() for shapeSet
Add ComputeLePdfFromPoint() to Light
Expose material and light members of Intersection
Restructure direct lighting functions in preparation for MIS
Add ComputePdf() function to Material
Add pdf return value to SampleWi() method of Material
Add pdf return value to SampleLeFromPoint() method of Light
Implement computation of MIS weights for direct lighting
Implement multiple importance sampling method for direct light estimation

Use MIS in Cornell box scene and the MIS test scene.

Feature-End: mis
Add scaffolding for ParticleTracer and ParticleTracingRenderer

Also add hollow sphere scenes that uses ParticleTracingRenderer.

Feature-Start: particle-tracer
Add GetSampleConfig() and SampleRay() methods to Light

Implement those methods for DiffuseAreaLight.