[ty] Make is_redundant_with return false for structural vs nominal types
Structural types (Callable and ProtocolInstance) are now never considered
redundant with non-structural types. This prevents union simplification
from incorrectly collapsing nominal types into structural types (e.g.,
`int | SupportsIndex` no longer simplifies to `SupportsIndex`).
https://claude.ai/code/session_01P6PuECEEWT8ktaSsG8K7jE