API: Have MultiIndex consturctors always return a MI
This removes the special case for MultiIndex constructors returning
an Index if all the levels are length-1. Now this will return a
MultiIndex with a single level.

This is a backwards incompatabile change, with no clear method for
deprecation, so we're making a clean break.

Old Behavior:

```python
In [1]: import pandas as pd

In [2]: pd.MultiIndex.from_tuples([('a',), ('b',)])
Out[2]: Index(['a', 'b'], dtype='object')

```

New:

```python
In [1]: import pandas as pd
In [2]: pd.MultiIndex.from_tuples([('a',), ('b',)])
Out[2]:
MultiIndex(levels=[['a', 'b']],
           labels=[[0, 1]])
```

Closes #17178
