Fixed #23924 -- Made EmailMessage raise TypeError for type checks

This change avoids silently producing broken `To`, `Cc` and `Bcc` headers when passed a string instead of a list of strings.
I'd change this check with `not isinstance(to, (list, tuple))`. You can pass a `set()`(and almost any iterable except a string) to `EmailMessage` with using the current check.