Setting multiindex with columns that contain list as element raises TypeError
#### Code Sample, a copy-pastable example if possible

```python
df = pd.DataFrame({'A': ['x1','x2','x3', 'x4'], 'B':[['v1','v2'],['v3','v4'],['v5','v6'],['v7','v8']], 'C':[['c1','c2'],['c3','c4','cc'],['c5','c6'],['c7','c8']],'D':[['d1','d2'],['d3','d4'],['d5','d6'],['d7','d8']], 'E':[['e1','e2'],['e3','e4'],['e5','e6'],['e7','e8']]})
df
  | A | B | C | D | E
-- | -- | -- | -- | -- | --
x1 | [v1, v2] | [c1, c2] | [d1, d2] | [e1, e2]
x2 | [v3, v4] | [c3, c4, cc] | [d3, d4] | [e3, e4]
x3 | [v5, v6] | [c5, c6] | [d5, d6] | [e5, e6]
x4 | [v7, v8] | [c7, c8] | [d7, d8] | [e7, e8]

```
#### Problem description
I was trying to set index with column A and column C (multiindex) in order to explode columns B,D,E only. (Column C should be excluded for explosion for one of its elements has different size)
Below code should do the job:
```
df.set_index(['A','C']).apply(pd.Series.explode).reset_index()
```
But pandas refuse to set multiindex with columns that contains list as their element, raising TypeError.

```
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\arrays\categorical.py in __init__(self, values, categories, ordered, dtype, fastpath)
    383             try:
--> 384                 codes, categories = factorize(values, sort=True)
    385             except TypeError:

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\util\_decorators.py in wrapper(*args, **kwargs)
    207                     kwargs[new_arg_name] = new_arg_value
--> 208             return func(*args, **kwargs)
    209 

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\algorithms.py in factorize(values, sort, order, na_sentinel, size_hint)
    671         labels, uniques = _factorize_array(
--> 672             values, na_sentinel=na_sentinel, size_hint=size_hint, na_value=na_value
    673         )

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\algorithms.py in _factorize_array(values, na_sentinel, size_hint, na_value)
    507     uniques, labels = table.factorize(
--> 508         values, na_sentinel=na_sentinel, na_value=na_value
    509     )

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.factorize()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable._unique()

TypeError: unhashable type: 'list'

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-32-c3b81bee4c46> in <module>
      1 # setting index with columns that contains list values : it causes error
----> 2 df.set_index(['A','C']) # error because C has list values in it.

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\frame.py in set_index(self, keys, drop, append, inplace, verify_integrity)
   4459                 )
   4460 
-> 4461         index = ensure_index_from_sequences(arrays, names)
   4462 
   4463         if verify_integrity and not index.is_unique:

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\indexes\base.py in ensure_index_from_sequences(sequences, names)
   5702         return Index(sequences[0], name=names)
   5703     else:
-> 5704         return MultiIndex.from_arrays(sequences, names=names)
   5705 
   5706 

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\indexes\multi.py in from_arrays(cls, arrays, sortorder, names)
    418         from pandas.core.arrays.categorical import _factorize_from_iterables
    419 
--> 420         codes, levels = _factorize_from_iterables(arrays)
    421         if names is None:
    422             names = [getattr(arr, "name", None) for arr in arrays]

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\arrays\categorical.py in _factorize_from_iterables(iterables)
   2814         # For consistency, it should return a list of 2 lists.
   2815         return [[], []]
-> 2816     return map(list, zip(*(_factorize_from_iterable(it) for it in iterables)))

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\arrays\categorical.py in <genexpr>(.0)
   2814         # For consistency, it should return a list of 2 lists.
   2815         return [[], []]
-> 2816     return map(list, zip(*(_factorize_from_iterable(it) for it in iterables)))

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\arrays\categorical.py in _factorize_from_iterable(values)
   2786         # but only the resulting categories, the order of which is independent
   2787         # from ordered. Set ordered to False as default. See GH #15457
-> 2788         cat = Categorical(values, ordered=False)
   2789         categories = cat.categories
   2790         codes = cat.codes

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\arrays\categorical.py in __init__(self, values, categories, ordered, dtype, fastpath)
    384                 codes, categories = factorize(values, sort=True)
    385             except TypeError:
--> 386                 codes, categories = factorize(values, sort=False)
    387                 if dtype._ordered:
    388                     # raise, as we don't have a sortable data structure and so

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\util\_decorators.py in wrapper(*args, **kwargs)
    206                 else:
    207                     kwargs[new_arg_name] = new_arg_value
--> 208             return func(*args, **kwargs)
    209 
    210         return wrapper

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\algorithms.py in factorize(values, sort, order, na_sentinel, size_hint)
    670 
    671         labels, uniques = _factorize_array(
--> 672             values, na_sentinel=na_sentinel, size_hint=size_hint, na_value=na_value
    673         )
    674 

~\AppData\Local\Continuum\miniconda3\lib\site-packages\pandas\core\algorithms.py in _factorize_array(values, na_sentinel, size_hint, na_value)
    506     table = hash_klass(size_hint or len(values))
    507     uniques, labels = table.factorize(
--> 508         values, na_sentinel=na_sentinel, na_value=na_value
    509     )
    510 

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.factorize()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable._unique()

TypeError: unhashable type: 'list'
```
####

Setting index with a single column with lists works fine.
```
df.set_index('C')
	A	B	D	E
C				
[c1, c2]	x1	[v1, v2]	[d1, d2]	[e1, e2]
[c3, c4, cc]	x2	[v3, v4]	[d3, d4]	[e3, e4]
[c5, c6]	x3	[v5, v6]	[d5, d6]	[e5, e6]
[c7, c8]	x4	[v7, v8]	[d7, d8]	[e7, e8]
```
#### Output of ``pd.show_versions()``

INSTALLED VERSIONS
------------------
commit           : None
python           : 3.7.6.final.0
python-bits      : 64
OS               : Windows
OS-release       : 10
machine          : AMD64
processor        : Intel64 Family 6 Model 158 Stepping 9, GenuineIntel
byteorder        : little
LC_ALL           : None
LANG             : None
LOCALE           : None.None

pandas           : 0.25.3
numpy            : 1.17.4
pytz             : 2019.3
dateutil         : 2.8.1
pip              : 19.3.1
setuptools       : 44.0.0.post20200106
Cython           : None
pytest           : None
hypothesis       : None
sphinx           : None
blosc            : None
feather          : None
xlsxwriter       : None
lxml.etree       : None
html5lib         : None
pymysql          : None
psycopg2         : None
jinja2           : 2.10.3
IPython          : 7.11.1
pandas_datareader: None
bs4              : None
bottleneck       : None
fastparquet      : None
gcsfs            : None
lxml.etree       : None
matplotlib       : 3.1.1
numexpr          : None
odfpy            : None
openpyxl         : None
pandas_gbq       : None
pyarrow          : 0.13.0
pytables         : None
s3fs             : None
scipy            : 1.3.2
sqlalchemy       : None
tables           : None
xarray           : None
xlrd             : 1.2.0
xlwt             : None
xlsxwriter       : None

</details>
