text: Title: Better error messages for jupyter kernel edge cases
  Body: Strictly speaking, the python env running the jupyter process does not have to be the same that the one where the kernel is running. This makes sense for notebook-facing applications but no so much for headless notebook execution (like ploomber), because there's no reason to want two python envs.
  
  There can be some edge cases that might lead to broken kernels.
  
  When running a pipeline with an R kernel, papermill was breaking because it could not locate an R kernel, but the error pointed to a missing kernel whose path pointed to a different environment (one that I deleted before).
  
  ```sh
  jupyter kernelspec list
  ```
  
  Output:
  
  ```sh
  ir                                                                 /Users/Edu/Library/Jupyter/kernels/ir
  ```
  
  When looking at the json kernel spec, I saw the path to the non-existing kernel. After deleting the `ir/` folder:
  
  ```sh
  jupyter kernelspec list
  ```
  
  Output:
  
  ```
  ir                                                                 /Users/Edu/miniconda3/envs/etl/share/jupyter/kernels/ir
  ```
  
  This new kernel had the right location.
  
  An important detail is that I never specifically installed the ir kernel in the local environment, I just installed it from a `environment.yml` file. My guess is that such step is not strictly necessary and jupyter is able to automatically find kernels in the same env, but given that there was already another ir kernel, it ignored that one.
  
  Maybe print a warning then the kernel that NotebookRunner is about to use exists outside the current env?
  
  
  
  
  