Add scaffolding for BidirectionalPathTrac{ingRenderer,er}

Also add scene configs that use BidirectionalPathTracingRenderer.

Feature-Start: bdpt-basic
Add Sensor methods to sample/compute spatial and directional We seperately

Also implement for all sensors.
Add scaffolding for PathVertex class
Generate light samples for BidirectionalPathTracingRenderer
Add light/sensor super-vertex and vertex types to PathVertex

Also implement PathVertex.SampleNext() for light/sensor super-vertices
and add validation functions.
Implement PathVertex.SampleNext() for light vertices

Also add surface interaction vertex type.
Implement PathVertex.SampleNext() for sensor vertices
Implement PathVertex.SampleNext() for surface interaction vertices
Implement custom PathVertex.String() method

Also implement MaterialTransportType.String().
Implement contribution computation from light super-vertices

Use it to make BidirectionalPathTracer do basic path tracing.
Implement recording of debug info for BidirectionalParticleTracer

Record per-edge-count contributions for now.
Record path lengths for BidirectionalPathTracer for debug level >= 1
Implement contribution computation from surface and light interactions
Include contributions from most combinations of light/sensor subpaths
Implement recording of more debug info for BidirectionalParticleTracer

Record per-connection unweighted/weighted contributions and
weights for level 2.

Feature-End: bdpt-basic