Doc updates and test additions

Hi Wolfgang, just a naïve though: could this cycle start from `0` so that the cost function and expected error reduction are written in a single place in the implementation and thus are less error prone? The initial value of `min_cost` could initialised with `std::limits<double>::max()` so that one automatically gets M=0 as a starting guess. 
Also in the current version, if there is no reduction from M=1 onwards (M=0 happens to be the minimum), minArg stays N-1. Do not know if this is expected.