BUG: cut() ignores labels, include_lowest and other parameters when bins are given by IntervalIndex
#### Code Sample, a copy-pastable example

```python
import pandas as pd
df = pd.DataFrame({'A': range(1, 10, 1)})

bins_s = [1, 5, 8]
bins_i = pd.IntervalIndex.from_tuples([(1, 5), (5, 8)])
labels = ['low', 'high']

df['A_s'] = pd.cut(df['A'], bins_s, labels=labels, include_lowest=True, right=False)
df['A_i'] = pd.cut(df['A'], bins_i, labels=labels, include_lowest=True, right=False)

print(df)
```

actual output
```
   A   A_s         A_i
0  1   low         NaN
1  2   low  (1.0, 5.0]
2  3   low  (1.0, 5.0]
3  4   low  (1.0, 5.0]
4  5  high  (1.0, 5.0]
5  6  high  (5.0, 8.0]
6  7  high  (5.0, 8.0]
7  8   NaN  (5.0, 8.0]
8  9   NaN         NaN

```
#### Problem description

The cut() implementation redirects to `Categorical.from_codes` when the bins are given by an IntervalIndex ignoring labels and producing results inconsistent with an equivalent call to cut with bins given by a sequence. 

#### Expected Output

One would expect `A_s` anb `A_i` to be identical given the equivalent bin specifications.

#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit           : None
python           : 3.8.3.final.0
python-bits      : 64
OS               : Windows
OS-release       : 10
machine          : AMD64
processor        : Intel64 Family 6 Model 94 Stepping 3, GenuineIntel
byteorder        : little
LC_ALL           : None
LANG             : None
LOCALE           : English_United States.1252

pandas           : 1.0.3
numpy            : 1.18.1
pytz             : 2020.1
dateutil         : 2.8.1
pip              : 20.0.2
setuptools       : 47.1.1.post20200604
Cython           : None
</details>
