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.
Add parameter for transport type to Material
Add more scaffolding to ParticleTracingRenderer and ParticleTracer

Add sampleCount option for ParticleTracingRenderer.
Add ComputePixelPositionAndWe() method to Sensor
Add methods to Sensor for accumulating samples and recording them
Add sensor list to Intersection type
Implement accumulation of alpha onto sensors
Make sampling method for DiffuseAreaLight configurable

Also add support for cosine sampling in DiffuseAreaLight.
Avoid modifying Sensors directly in ParticleTracer.SamplePath()
Implementing blocking for ParticleTracingRenderer to bound memory usage
Use multiple goroutines to process samples in ParticleTracingRenderer

Also switch back to counting samples for progress output.

Feature-End: particle-tracer
Add irradiance meter to hollow sphere particle tracer scenes

Feature-Start: particle-tracer-sensor-sampling
Add particle tracer version of disk irradiance scene
Add particle tracer version of square irradiance scene
Add particle tracer version of Cornell box scene
Add ParticleTracerSamplingMethod type
Add SamplePixelPositionAndWeFromPoint() method to Sensor

Write non-trivial implementations for IrradianceMeter, FluxMeter, and
PerspectiveCamera.
Add Light methods to sample/compute spatial and directional Le seperately

Also implement them for DiffuseAreaLight.
Implement ParticleTracer sensor sampling method

Use that method in all particle tracer scenes.

Feature-End: particle-tracer-sensor-sampling