Return the valuation of the product using the given model.
Implement this method using a checked cast of the model to a derived model for which the product
provides a valuation algorithm. Example: an interest rate product requires that the passed model
object implements the interface of an interest rate model. Since there is no polymorphism on
arguments (see Double Dynamic Dispatch), we reply on a checked cast.