Implemented comparator for solutions

A comparator (greater than) is now used for evaluating solutions to an
optimization problem rather than dealing directly with fitness and
problems. Greater than simply means better which inverts depending on
whether the problem is a maximization or minimization problem