text: Title: Widgets with return type annotation `List[LayerDataTuple]` don't get their layers added to the `Viewer`
  Body: ### 🐛 Bug Report
  
  In `0.5.0` we dropped support for python 3.8, which included some typing changes. Notably, the `list` type no longer needed importing `from typing import List`, but could be used directly.
  
  This led to a change in the types we register with `magicgui` - notably, we now use the builtin `list` type for `LayerDataTuple` [here](https://github.com/napari/napari/pull/6738/files#diff-0d09c2e8083dd5acfebfeffc8e34e4c44d781e246d736d6e7db79feae78194d6R160).
  
  Now, any magicgui widget that is return type annotated with the imported `List[LayerDataTuple]` no longer works i.e. the layers are not added to the viewer.
  
  ### 💡 Steps to Reproduce
  
  1. Run the following script
  
  ```python
  import numpy as np
  import napari
  from magicgui import magic_factory
  from napari.types import LayerDataTuple
  from typing import List
  
  @magic_factory
  def layer_return(
      first_layer: 'napari.types.ImageData',
  # ) -> list[LayerDataTuple]:
  ) -> List[LayerDataTuple]:
      layer_tuple = (first_layer, {}, 'image')
      layer_tuple_list = [layer_tuple]
      return layer_tuple_list
  
  viewer = napari.Viewer()
  viewer.add_image(np.random.rand(20, 20))
  viewer.window.add_dock_widget(layer_return())
  
  napari.run()
  ```
  2. Click the `Run` button on the widget
  3. Nothing happens.
  4. Swap the uncommented return statement
  5. Run the script
  6. Click `Run` button on the widget
  7. Layer gets added
  
  ### 💡 Expected Behavior
  
  I expected the layer to be added to the viewer regardless of whether the builtin `list` type is used or whether we import `from typing import List`.
  
  ### 🌎 Environment
  
  ```
  napari: 0.5.0
  Platform: macOS-10.16-x86_64-i386-64bit
  System: MacOS 14.5
  Python: 3.10.14 (main, May  6 2024, 14:47:20) [Clang 14.0.6 ]
  Qt: 5.15.2
  PyQt5: 5.15.10
  NumPy: 1.26.4
  SciPy: 1.14.0
  Dask: 2024.7.1
  VisPy: 0.14.3
  magicgui: 0.8.3
  superqt: 0.6.7
  in-n-out: 0.2.1
  app-model: 0.2.8
  npe2: 0.7.6
  
  OpenGL:
    - GL version:  2.1 INTEL-22.5.11
    - MAX_TEXTURE_SIZE: 16384
    - GL_MAX_3D_TEXTURE_SIZE: 2048
  
  Screens:
    - screen 1: resolution 1440x900, scale 2.0
    - screen 2: resolution 3840x2160, scale 1.0
  
  Optional:
    - numba: 0.60.0
    - triangle not installed
  
  Settings path:
    - /Users/ddoncilapop/Library/Application Support/napari/stardist_d7f2585946fc58f34534dbaf8ce99a60b9039489/settings.yaml
  Plugins:
    - napari: 0.5.0 (81 contributions)
    - napari-console: 0.0.9 (0 contributions)
    - napari-svg: 0.2.0 (2 contributions)
    - stardist-napari: 2022.12.6 (8 contributions)
    ```
  
  ### 💡 Additional Context
  
  We can bandaid fix this by changing line #160 in [this file](https://github.com/napari/napari/blob/main/napari/types.py#L160) to
  
  ```python
      for type_ in (LayerDataTuple, list[LayerDataTuple], List[LayerDataTuple]):
  ```
  
  But it's not clear that this should be the final solution - maybe we should be doing some disambiguating in magicgui? 
  I also haven't checked whether other types are affected.