Improvement of the greedy crossover algorithm and the evolutionary algorithm. Some refactorings to abstract some of the common classes. With the version of the code in this commit, both algorithms were able to find the best solution.