BSDF::sample refactor part 2

- Moved SamplingContext to BSDFSample.
- Made BSDFSample members private.
- Added accessors.
- Removed unused DirectLightingIntegrator constructor.

Not sure about the value of accessors such as `get_value()` if they are bound to return a mutable reference to a class member anyway...