feat(lib): allow modifying fitness function in evolution_algorithm
chore: move population structs to separate module
feat(tsp): Remove with iteration functions
feat: split params out of PerturbationOperator to allow for non-'static PerturbationOperator
This means PerturbationOperators can now hold non-'static references.
Right away, utilize this in the Random2OptPerturbation for the TSPInstance.
fix(tsp): few more tweaks
chore: add jsons with plot definitions
feat(tsp): add binary ls, use 10k iterations instead of 5k
feat: add a lot of algorithm showcases
chore(tsp): few minor updates
tests(tsp): move tests to proper modules, fix uses
feat(tsp): add MinimalSpanningTree initializer
feat(tsp): add 2opt perturbation for subsequence reversal
feat(tsp): add TSPInstance convertor to GenericGraph
feat(tsp): add minimal spanning tree and filter_edges
feat(tsp): add nearest neighbor initializer
feat(tsp): add cycle, no and partially mapped crossovers
refactor(tsp): split to multiple files out of tsp.rs
refactor(tsp): put plotting to main to not repeat code