MultiIndex.set_levels and empty levels
`MultiIndex`es with empty levels are valid, but `set_levels` does not account for that case:
```python
index = pd.MultiIndex(levels=[[], []], labels=[[], []], names=['a', 'b'])
index.set_levels([], level='a')
```

The `set_levels` code that looks like
```python
if is_list_like(levels[0]):
    raise TypeError("Levels must be list-like")
```
should probably be
```python
if len(levels) > 0 and is_list_like(levels[0]):
    raise TypeError("Levels must be list-like")
```

While I'm looking at this, a couple other questiosn:
- How come we only check the first element? What if levels looks like `['a', ['b']]`? I think we need to do `any(is_list_like(x) for x in levels)`, which has the additional benefit that empty levels are handled correctly.
- Can we make the `TypeError` message more precise? Maybe something like `ValueError("Levels must not contain list-like items")`