Concat with mixed single index / multi-index and keys gives confusing error message
#### Code Sample, a copy-pastable example if possible

With 0.23.4:

```python
In [2]: df1 = pd.DataFrame(np.random.randint(0, 10, (4,3)), columns=['A', 'B', 'C'])                                                                                            

In [3]: df2 = pd.DataFrame(np.random.randint(0, 10, (4,3)), columns=['A', 'B', 'C'], index=pd.MultiIndex.from_product([['a', 'b'], [1, 2]]))                                    

In [4]: pd.concat([df1, df2])                                                                                                                                                   
Out[4]: 
        A  B  C
0       1  3  2
1       6  6  2
2       2  6  4
3       7  5  5
(a, 1)  7  4  2
(a, 2)  1  7  3
(b, 1)  8  3  6
(b, 2)  1  2  9

In [5]: pd.concat([df1, df2], keys=[1, 2])                                                                                                                                      
....
TypeError: 'values' is not ordered, please explicitly specify the categories order by passing in a categories argument.
```

With master, the error became clearer:

```
In [3]: pd.concat([df1, df2], keys=[1, 2])
...
~/scipy/pandas/pandas/core/reshape/concat.py in _make_concat_multiindex(indexes, keys, levels, names)
    589             # make sure that all of the passed indices have the same nlevels
    590             if not len({idx.nlevels for idx in indexes}) == 1:
--> 591                 raise AssertionError("Cannot concat indices that do"
    592                                      " not have the same number of levels")
    593 

AssertionError: Cannot concat indices that do not have the same number of levels
```

But, we should not be raising AssertionErrors to users.


Further, we could maybe also say that this can work? It works in the case where no `keys` are passed, converting the mixture of single index and MultiIndex into an object dtype Index with mixed scalars and tuples. That could be extended to the `keys=` case where this mixed Index is just the second level of the final MultiIndex.