Move bidirectional path weight computation into its own function

Feature-Start: bdpt-mis
Add a configuration option for bidirectional path weights

Name the current one "uniform".
Add scaffolding for MIS bidirectional path weight computation

Also add option to use MIS bidirectional path weights (with the balance
heuristic) and make bdpt scenes use it.
Add Shape.ComputePdf() method and implement for all shapes
Implement ShapeSet.ComputePdf()
Add Light.ComputeLeSpatial() method and implement for DiffuseAreaLight
Add Light.ComputeLeDirectional() method and implement for DiffuseAreaLight
Implement PathVertex.ComputePdfSurfaceArea()
Implement calculation of MIS bidirectional path weights
Add option to use power heuristic for MIS bidirectional path weights

Feature-End: bdpt-mis