Add scaffolding for ParticleTracer and ParticleTracingRenderer
Add GetSampleConfig() and SampleRay() methods to Light

Implement those methods for DiffuseAreaLight.
Add parameter for transport type to Material
Add more scaffolding to ParticleTracingRenderer and ParticleTracer
Add ComputePixelPositionAndWe() method to Sensor
Add methods to Sensor for accumulating samples and recording them
Add sensor list to Intersection type
Implement accumulation of incident radiance onto sensors
Make sampling method for DiffuseAreaLight configurable

Also add support for cosine sampling in DiffuseAreaLight.
Avoid modifying Sensors directly in ParticleTracer.SamplePath()
Use multiple go-routines to process samples in ParticleTracingRenderer