Topic/plat 6858

* Implemented **ProductPiecewisePolynomialInterpolator** and its wrappers, **ProductPiecewisePolynomialInterpolator1D**, **ProductPolynomialExtrapolator1D** and **ReciprocalExtrapolator1D**. 
* All of these have test classes, **ProductPiecewisePolynomialInterpolatorTest**, **ProductPiecewisePolynomialInterpolator1DTest**, **ProductPolynomialExtrapolator1DTest** and **ReciprocalExtrapolator1DTest**.  
This ought to be set in a class member at construction time as the data regarding clamping is provided during construction and is immutable. The function call and test is then eliminated.