DOE: add preprocessors to be called before each iteration
The objective of a DOE algorithm is to sample a collection of functions.
Before generating the i-th sample, the user may want to do some preprocessing.
For that purpose, a DOE option preprocessors: Iterable[Callable[[int], None] would be suitable.