Topic/plat 6658

* Extended SmileInterpolatorSABR into **SmileInterpolatorSABRWithExtrapolation** such that SABR takes left and right extrapolations as **SmileExtrapolationFunctionSABRProvider**. 
* Two choices are available for the extrapolators, **ShiftedLogNormalExtrapolationFunctionProvider** and **BenaimDodgsonKainthExtrapolationFunctionProvider**.
* Smoothness of the extrapolations at cut-offs is tested in **SmileInterpolatorSABRWithExtrapolationTest**.
* Extended SABR-specific methods (and also only right extrapolation can be applied to these methods), CouponIborInArrearsReplicationMethod and CapFloorIborInArrearsSABRCapGenericReplicationMethod, into **CouponIborInArrearsSmileModelReplicationMethod** and **CapFloorIborInArrearsSmileModelCapGenericReplicationMethod** which take **InterpolatedSmileFunction** constructed from GeneralSmileInterpolator.
* Consistency between the old methods and the new methods (in terms of the right extrapolation with SABR) is confirmed in the test class **CapFloorIborInArrearsSmileModelCapGenericReplicationMethodTest**
`count < 10`, `10` appears to be a magic number, is this intended? Further, given it is referenced below in a branch condition perhaps assign it as the variable `maxIter = 10` and use the variable instead?