Implement light path tracing for TwoWayPathTracer

It will be hooked up to TwoWayPathTracingRenderer later.
Add SampleConfig.CombineWith() method

This will be used to generate a SampleConfig that can be used for any
light.
Hook up light path tracing to TwoWayPathTracingRenderer
Move sensor/light path tracing logic into TwoWayPathTracer
Move weight calculation deeper into TwoWayPathTracer
Add HasSpecularDirection() method to Sensor and implement for all Sensors
Take into account sensors with specular directions
Take into account maximum path lengths when calculating weights

Also specify the specularity conditions to handle in the future.