text: Title: New event loop is created across different runs in asyncio
  Body: I think this is not intentional - the implication is that setting new event loop policies will possibly lose the current event loop:
  
  https://github.com/agronholm/anyio/blob/14daa2bad967bf6dd0f96d04ecffe8e383985195/anyio/_backends/_asyncio.py#L71-L86
  
  This causes the pytest plugin to have different event loops across fixtures and tests:
  
  ```python
  import asyncio
  
  import pytest
  
  
  @pytest.fixture
  async def loop():
      return asyncio.get_event_loop()
  
  
  @pytest.mark.anyio
  async def test(loop):
      assert loop is asyncio.get_event_loop()  # fails here
  ```
  
  In many cases, the fixture should share the same loop as the test, for example:
  
  ```python
  import asyncpg
  
  import pytest
  
  
  @pytest.fixture
  async def conn():
      return await asyncpg.connect("postgresql:///")
  
  
  @pytest.mark.anyio
  async def test(conn):
      assert await conn.fetchval("SELECT 123") == 123
  ```
  
  ```
  E   RuntimeError: Task <Task pending name='Task-5' coro=<run.<locals>.wrapper() running at .../anyio/_backends/_asyncio.py:67> cb=[run_until_complete.<locals>.<lambda>()]> got Future <Future pending cb=[Protocol._on_waiter_completed()]> attached to a different loop
  ```
  
  One possible solution is to cache all policy instances under different setups, and switch to use the right one. I'll create a PR with a more complete test.