MDFs refactor work:

- Added a base class for MDFs.
- Added the possibility to implement anisotropic MDFs in the future.
- Decoupled the distribution function and the geometric attenuation function for Beckmann and GGX MDFs.
- Added a new Microfacet2BRDF, that's compatible with the OSL spec.
- Added support for OSL's microfacet closures (only reflection for now).
- Added unit tests.