Feature: set arguments names

cc @thomas-moulard 

Key points of this PR:
* implements #46: provides a simple way to set a vector of names for optimization parameters,
* default = empty `std::string` vector to keep RobOptim as light as possible (some people may not need this feature)
* updated `OptimizationLogger` to use these names (if provided),
* added a new test for `OptimizationLogger`, which allowed me to find a bug (`OptimizationLogger` + non-differentiable `Function` did not work). There's still some work to be done to treat each constraint separately when logging (since some constraints may provide a Jacobian, some may not). For now, I just test the cost function (the trick is to use `boost::is_base_of`).