Refactoring of evaluate individuals in optimiser
Created by: gkirgizov
- Introduce generic Operator interface for Optimiser operators. I will use it more in following PR-s related to #608 (closed) to make logic and abstraction of evo algo clear & reusable.
- Current PR introduces only one specfic Evaluate operator. It keeps everything related to evaluation in one place. No new logic is added, mostly cleanup and reorganization of the code.
- Also refined type signatures of Graph adapters and added no-op behavior for already adapted graphs (to avoid excessive checks a-la `adapt if not already adapted)
- Refactor a bit ComposerBuilder to avoid late-initialisation through assignment of
composer.optimiser