BUG: Conflict with DataFrame.where and Interval via data replacement
### 

- [X] I have checked that this issue has not already been reported.

- [X] I have confirmed this bug exists on the [latest version](https://pandas.pydata.org/docs/whatsnew/index.html) of pandas.

- [X] I have confirmed this bug exists on the master branch of pandas.


### Reproducible Example

```python
import pandas as pd
df = pd.DataFrame([pd.Interval(0,0)])
df.where(df.notnull())
```


### Issue Description

Data replacement using `DataFrame.where` raises `ValueError: Cannot set float NaN to integer-backed IntervalArray`,
when the dataframe instance contains one or multiple columns of `dtype: interval`.

### Expected Behavior

Data replacement and `dtype` conversion as per usual, i.e. in this case no replacement or column `dtype` conversion should be done, and the original `DataFrame` should be returned.
```python
expected = df
```

### Installed Versions

<details>

INSTALLED VERSIONS
------------------
commit           : 73c68257545b5f8530b7044f56647bd2db92e2ba
python           : 3.8.10.final.0
python-bits      : 64
OS               : Linux
OS-release       : 3.10.0-1160.15.2.el7.x86_64
Version          : #1 SMP Thu Jan 21 16:15:07 EST 2021
machine          : x86_64
processor        : x86_64
byteorder        : little
LC_ALL           : en_US.UTF-8
LANG             : en_US.UTF-8
LOCALE           : en_US.UTF-8

pandas           : 1.3.3
numpy            : 1.21.2
pytz             : 2021.1
dateutil         : 2.8.2
pip              : 20.0.2
setuptools       : 44.0.0
Cython           : None
pytest           : 6.2.5
hypothesis       : None
show more (open the raw output data in a text editor) ...

tabulate         : None
xarray           : None
xlrd             : None
xlwt             : None
numba            : None

</details>
