fix ManipulateDistribution::convolve() QL_REQUIRE
fix CommodityCurve::dates_ and CommodityCurve::data_ leak 

each time you call CommodityCurve::setPrices()
fix potential EnergyCommodity::secondaryCostAmounts_ leak

each time you call EnergyCommodity::calculateSecondaryCostAmounts()
fix SmileSectionUtils::SmileSectionUtils() insertion values to "k_"

```C++
k_.push_back( tmp[i] * f_ );
```
was without check
fix "RecursiveCdoEngine::loss_unit_" init

before getting "std::min_element(lgds.begin(), lgds.end())"
in "lgds" removed all "0" elements. But this is not correct removing.
std::remove() only moving all the elements that not equal to "0" and return iterator to the new end.
instead of "0" lgds contains trash. There are two ways:
1. get iterator to the new end: std::min_element(lgds.begin(), new_end_iterator)
2. really erase all "0" from lgds: lgds.erase(std::remove(lgds.begin(), lgds.end(), 0.), lgds.end());

cplusplus.com/reference/algorithm/remove/

I suggest 2
add endpoints for sections with limited strike range,
move deleteArbitragePoints from KahaleSmileSection to SmileSectionUtils,
delete unused member variables,
use otm option to imply volatility from price,
reformat source code
change criterion to identify optional flows to exercise date <= accrual start date
make sure that min and max strike are added only once
Merge pull request #36.
Merge pull request #35.