fix: properly evaluate nsga population The full population has to be evaluated at once, offsprings cannot be evaluated individually.
refactor(lib): Allow fitting whole population at once The fitness function gets fit_population function. The default implementation is going over fit() one by one, but it can be reimplemented by specific types.
chore: move population structs to separate module