chore: move population structs to separate module
feat(lib): add evaluation count to EA stats
fix(lib): do not take mut self in population.iter()
feat: add into_iter for population
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 replacement strategy could be using wrong indices
feat: add best replacement
chore: move env to codes/eoa_lib
feat: Add replacement strategy