[ty] Preserve checks for recursive descriptor setter types
Inspect dependencies on the setter signature explicitly, including recursive aliases, protocols, and TypedDicts. Recursive specializations that are independent of the setter parameters retain their writable-member checks.
Co-authored-by: Ibraheem Ahmed <ibraheem@ibraheem.ca>