MAINT: refactoring mutation, dithering and bounds into DifferentialEvolutionSolver.  DifferentialEvolutionSolver now uses bounds instead of limits array. Mutation and dithering checking is done in DifferentialEvolutionSolver instead of differential_evolution. This checking is done in a more pythonic way.