Abstract notion of Fitness and unify its usages
Created by: gkirgizov
- Main purpose is to unify usages of Fitness, giving multi- and single- objective fitness common interface.
 - Add 
PrioritisedFitnessthat generalizes single-objective optimization for the case of secondary quality metrics. This will allow to simplify usages of the so-calledsupplementary_metricsin optimisers, completely hiding them. - This PR also introduces base abstract 
Comparableclass, and Fitness inherits from it.