Changed the QualityMessage to be able to be used for single- and multi-objective problems.
The new SingleObjectiveQualityMessage and MultiObjectiveQualityMessage now "inherits" from QualityMessages to be able to be used in a polymorph manner.
The EvaluationCache now now stores the QualityMessage instead of a single double.
This way the cache can be used for single- and multi-objective problems and additionally opens the possibility to extend the quality message with any data. (previously extended data was lost when the cache was persisted and loaded again)
When deserializing an older version of the cache a new single objective quality message is created from the double value.
This way, no compatibility is broken and version must not be incremented.
Adapted the ExternalEvaluationProblem to the changes of the EvaluationCache and the QualityMessage.
Added a MultiObjectiveExternalEvaluationProblem on basis of the ExternalEvaluationProblem and added a IExternalEvaluationProblem interface.