NA is not included in MultiIndex.levels if we construct MI with nan
If we construct MI with `nan`, and check the `levels`, output does not contain `nan`,
```python
>>> tuples = [["A", "B"], ["A", np.nan], ["B", "A"]]
>>> mi = pd.MultiIndex.from_tuples(tuples, names=list("ab"))
>>> mi.levels
FrozenList([['A', 'B'], ['A', 'B']])
```
Tracking it down, this is due to `pd.Categorical` does not include NA in `categories`:
```python
>>> pd.Categorical(['a', 'b', None])
[a, b, NaN]
Categories (2, object): [a, b]
```

While `inferred_type` does indicate it is a mixed type, so `np.nan` should be accepted.
```python
>>> tuples = [["A", "B"], ["A", np.nan], ["B", "A"]]
>>> mi = pd.MultiIndex.from_tuples(tuples, names=list("ab"))
>>> mi.inferred_type
'mixed'
```

However, if the `nan` is gotten by operations, the `nan` is included in levels, e.g.
```python
>>> l = [["a", np.NaN, 12, 12], [None, "a", 12.3, 33.], ["b", np.nan, 12.3, 123], ["a", "a", 1, 1]]
>>> df = pd.DataFrame(l, columns=["a", "b", "c", "d"])
>>> grouped = df.groupby(by=["a", "b"], dropna=False).sum()
>>> grouped.index.levels
FrozenList([['a', 'b', nan], ['a', nan]])
```

This is quite inconsistent though, is it an intended behaviour?