text: Title: Add caching to load_dag
  Body: `load_dag` is an expensive operation and many times it's called with the same argument, so we should cache the result
  
  here's the implementation:
  
  https://github.com/ploomber/ploomber/blob/2e0d764c8f914ba21480b275c545ea50ff800513/src/ploomber/jupyter/manager.py#L107
  
  so every time the function is called, we should save the `starting_dir` value, and the returned `path`:
  
  https://github.com/ploomber/ploomber/blob/2e0d764c8f914ba21480b275c545ea50ff800513/src/ploomber/jupyter/manager.py#L120
  
  next time the function is called, check if `starting_dir` is the same and the file in `path` hasn't changed. if so, skip the function's body
  
  add tests here: https://github.com/ploomber/ploomber/blob/master/tests/test_jupyter.py#L901
  
  