Prepare pull-request for downhill simplex.

In particular, memory allocation issues, comments to the last commit and
documentation were worked on.

Among these, only documentation is still
not finished and a few words about it are to be said, and please let me
know if you think decisions below are wrong:

1) There is no documentation for optim::Solver interface, only for
optim::Downhill. Please, correct me if you think that's wrong. I did it
in this way because so far the only implementation of Solver is
DownhillSolver, so there is no sense in documenting Solver and then
remaining methods of DownhillSolver - no overhead would be removed.
Furthermore, as Solver is relatively new, it is likely to change as we
will implement more algorithms as the derivations of Solver

2) Solver::Function is not documented. I thought it's too easy to
document

3) Default parameters for methods were not mentioned. I did this because
they likely to be changed as we will do more tests.