BUG: Series.__setitem__ failing to cast numeric values
- [ ] closes #xxxx
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit) for how to run them
- [x] whatsnew entry

Two cases this fixes (both tested in test_coersion)

```
ser = pd.Series([1, 2, 3, 4])
ser[1] = 1.1
>>> ser[1]
1.1  # <- PR
1    # <- master; note that setting with loc or iloc *does* cast


ser2 = pd.Series([1, 2, 3, 4], dtype=np.int8)
ser2[1] = np.int16(512)

>>> ser2[1]
512 # <- PR; casts to int16
0   # <- master; still np.int8; note that setting with with loc or iloc *does* cast
```

Downside: can_hold_element is heavier-weight than validate_numeric_casting.
this is a break with numpy (good) but needs a good note here This adresses parts of #20643 I think. The Series.__setitem__ case was not working there Also:
- #37477
- #15413
 @jbrockmendel addressing @phofl comments in followup or here? Follwups. Definitely plural.

On Fri, Dec 31, 2021 at 6:58 AM Jeff Reback ***@***.***>
wrote:

> @jbrockmendel <https://github.com/jbrockmendel> addressing @phofl
> <https://github.com/phofl> comments in followup or here?
>
> —
> Reply to this email directly, view it on GitHub
> <https://github.com/pandas-dev/pandas/pull/45121#issuecomment-1003394993>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/AB5UM6GFJPCM6JOUTFCZRRDUTXAIVANCNFSM5K65KHHQ>
> .
> Triage notifications on the go with GitHub Mobile for iOS
> <https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
> or Android
> <https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
>
> You are receiving this because you were mentioned.Message ID:
> ***@***.***>
>
 k great