Refactor ApiComposer for simpler logic
Created by: gkirgizov
Many small changes in ApiComposer, mostly for readability and easier parameter passing:
- Simpler passing of initial assumptions
- Better separation between ApiComposer / Composre / ComposerBuilder (ApiComposer & Composer itself previously took some parts that better should be in ComposerBuilder)
- Some simplification of preset logic and code duplication removal
- Some simplification of tuner logic
Important changes in API:
- Optimisers now always return a sorted sequence of the best models (previously it could return 1 model for single-objective optimization, list for multi-objective). Instead, Composer can do that based on the best_models returned by Optimiser.
- API now doesn't have access to archive (HallOfFame) which I see as internal implementation detail. Instead, it has access just to the best_models and to the OptHistory, which actually stores best_individuals for each generation.