Fix: NotebookProgressCallback crash when evaluating with the Trainer (#44949)
* Fix NotebookProgressCallback to allow evaluate() before and after train
* Add unit test for NotebookProgressCallback evaluating before and after training
* Skip NotebookProgressCallback tests when IPython is not installed
* Display eval metrics when training tracker is None on NotebookProgressCallback
* Add is_ipython_available and require_ipython test decorator
* Filter model_preparation_time metric and add code comments in on_eval