This macro adds the following private fields to the struct defining an algorithm:
problem, number_of_individuals, population, generation,stopping_condition,
number_of_function_evaluations, start_time, export_history and parallel.
This macro adds common items when the Algorithm trait is implemented for a new algorithm
struct. This adds the following items: Algorithm::name(), Algorithm::stopping_condition()Algorithm::start_time(), Algorithm::problem(), Algorithm::population(),
Algorithm::generation(), Algorithm::number_of_function_evaluations() and Algorithm::export_history().