DEPS: Use ipython run_cell instead of run_code; remove pytest-asyncio
pytest-asyncio is used for a unit test that uses an ipython API `run_code` that is async. I think the equivalent functionality is tested via `run_cell` which is not async and therefore allows us to remove the dependency.

Additionally, it appears this plugin is causing our CI failures

https://github.com/pytest-dev/pytest-asyncio/issues/655 
https://github.com/pandas-dev/pandas/actions/runs/6775657564/job/18415436948 
This gets us closer to a green CI and `pytest-asyncio` IMO wasn't an important dependency so going to merge Owee, I'm MrMeeseeks, Look at me.

There seem to be a conflict, please backport manually. Here are approximate instructions:

1. Checkout backport branch and update it.

```
git checkout 2.1.x
git pull
```

2. Cherry pick the first parent branch of the this PR on top of the older branch:
```
git cherry-pick -x -m1 31fde44d6616a7e3c0f184d47ef74be8e3ca72cd
```

3. You will likely have some merge/cherry-pick conflict here, fix them and commit:

```
git commit -am 'Backport PR #55853: DEPS: Use ipython run_cell instead of run_code; remove pytest-asyncio'
```

4. Push to a named branch:

```
git push YOURFORK 2.1.x:auto-backport-of-pr-55853-on-2.1.x
```

5. Create a PR against branch 2.1.x, I would have named this PR:

> "Backport PR #55853 on branch 2.1.x (DEPS: Use ipython run_cell instead of run_code; remove pytest-asyncio)"

And apply the correct labels and milestones.

Congratulations — you did some good work! Hopefully your backport PR will be tested by the continuous integration and merged soon!

Remember to remove the `Still Needs Manual Backport` label once the PR gets merged.

If these instructions are inaccurate, feel free to [suggest an improvement](https://github.com/MeeseeksBox/MeeseeksDev).
                