* Implementing a callback to switch between optimizers during training
* Implementing the R3Refinment for collocation points
* Modify trainer -> dataloader is created or updated by calling `_create_or_update_loader`
* Adding `add_points` routine to AbstractProblem so that new points can be added without resampling from scratch