BUG: Fixed IntervalArray[int].shift
Closes https://github.com/pandas-dev/pandas/issues/31495

In ExtensionArray.shift, we have the note

```
        # Note: this implementation assumes that `self.dtype.na_value` can be
        # stored in an instance of your ExtensionArray with `self.dtype`.
```

I wonder, should we have a method / property like

```
@property
def _can_hold_na_value(self):
    return True
```

And for IntervalArray, we would do something like

```python
@property
def _can_hold_na_value(self):
    return is_float_dtype(self.dtype.subtype)
```


That would let us deduplicate things, since the call to `_from_sequence` would know to not pass `dtype=self.dtype` and trigger a re-inference.
cc @jschendel for thoughts on that. This is still failing for `interval[datetime64]`, since we try to concat a float (all NaN) and datetime. Will poke around a bit. The datetime64 failure is present on master. I've opened https://github.com/pandas-dev/pandas/issues/31504 for it. LGTM, agreed it would be nice to find a way to make this work in the general case. All green now. Sorry about the string of CI failures earlier.