[AutoDiff] Use `@_fieldwiseDifferentiable` on struct decls and deprecate `@_fieldwiseProductSpace`. (#22009)
* Derived conformances for `Differentiable` puts `@_fieldwiseProductSpace` on either all associated types or none, so it is redundant to keep this attribute on every typealias in a `Differentiable` type. Instead, we move it up to the parent struct decl so that it simplifies both derivation and checking.
* Simplify `struct_extract` differentiation logic and improve code style.
* Remove legacy `lookUpOrLinkFunction` and have everything go through `DifferentiationTask`.