chore: remove Copy from requirement of TournamentSelection
chore: move population structs to separate module
feat(lib): add roulette wheel selection
refactor: pass rng as argument
Instead of having the Rng stored
inside the structs, pass it through
the functions. This means it's no longer
necessary to pass perturbations etc. as mutable.
fix: tournament selection in case last wins returned wrong index
fix: return proper indices from tournament
chore: move env to codes/eoa_lib
refactor: use evaluated population in selection
chore: update explanation comment
feat: add tournament selection