tests: add simple test for evolution on one_max
refactor: do perturbation in place instead of cloning
fix: tournament selection in case last wins returned wrong index
fix: tournament replacement strategy could be using wrong indices
feat: add best replacement
fix: return proper indices from tournament
feat: add mutation and combined perturbations
chore: make library out of eoa_lib
chore: move env to codes/eoa_lib
chore: remove unused rand::rng
refactor: use evaluated population in selection
feat: add evolution algorithm
feat: add pairing of parents
feat: Add replacement strategy
chore: update explanation comment
feat: add tournament selection
tests: use random initializer in a test