feat: implement improved nsga for constraints with archive of feasible solutions
fix: use two objectives in nsga_constr
feat: implement feasible crossover wrapper
feat(constr_hw02): Add nsga_constr algorithm
feat: save constraint violation average
feat(constr_hw02): g04, g05, g09 and g21
Lots of changes I lost track of
feat: use stochastic ranking for constr_hw02
feat: declare problems for hw02