Refactor evaluation_config, add regression_config

Instead of having evaluation_config convey the threading details, some
of it is mitigated to the regression_config, since it is not always
clear wether a certain evaluation function needs such details. Therefore
details such as population start and end indices are left to the
regression_config instead.
Add evaluation_test
Minor refactor
Add termination_config

Instead of having the termination criteria scattered in struct config,
they are placed into their own struct called termination_config. All
other functions that require these settings have been refactored.
Minor update