Currently, when constructing event handlers, user need to pass the estimator class, so handlers can access any information/data they need at different events (Reference comment)
We need to keep event handlers from access additional information they don't need from estimator, for example, data loaders, trainer, context
It will be useful to keep some information as training states/history and be able to serialize them for easy resuming from checkpoints
We can even make history object an event handler (setting information in states/history, serialize actions controlled by callbacks)