chore: remove city ids from chart
feat(tsp): add BinaryString representation of TSP
tests(tsp): add tests for reverse subsequence
fix(tsp): reverse properly in reverse subsequence perturbatio
feat: add edge recombination crossover
feat(tsp): add data loading
chore: add constructor for TSPRandomInitializer
fix: iterate city positions by rows
refactor: use swap_rows in SwapPerturbaiton instead of swapping by indices
feat: add plotting of TSP
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.