OpenMP for Gaussian1dSwaptionEngine

provide multithreading support in Gaussian1dSwaptionEngine, add constructors with observable model parameters to Gsr model, improve / fix update procedures in gaussian 1d models
It seems a bit weird to ask an index to return a swap with a different tenor. On the other hand, using the previous version (which, by the way, could have been written as `tmpIdx = swapIdx->clone(tenor)`) loses the caching of the swap across calls. Does it make a lot of difference?