Why is pd.Index.union not commutative?
#### Code Sample, a copy-pastable example if possible

```python
>>> ix = pd.Index([1,2])
>>> eix = pd.Index([])
>>> pi = pd.PeriodIndex(['19910905', '19910906'], freq='D')

# Pair 1
>>> pi.union(eix)
ValueError: can only call with other PeriodIndex-ed objects
>>> eix.union(pi)
PeriodIndex(['1991-09-05', '1991-09-06'], dtype='period[D]', freq='D')

# Pair 2
>>> pi.union(ix)
ValueError: can only call with other PeriodIndex-ed objects
>>> ix.union(pi)
Index([1, 2, 1991-09-05, 1991-09-06], dtype='object')
```
#### Problem description
Conceptually I would imagine a union operation to be commutative. I was just wondering if there was an deliberate rationale behind not implementing pd.Index._assert_can_do_setop to only fail if the complementary self._assert_can_do_setop also fails.

This behavior also leads to some unexpected behaviors in `pd.concat`. For example:

    >>> df1 = df1 = pd.DataFrame([[1,2,3],[1,2,3]], index=pd.PeriodIndex(['19910905', '19910906'], freq='D'))
    >>> df2 = pd.DataFrame()
    >>> pd.concat([df1, df2], axis=1, keys=['a', 'b'])
    ValueError: can only call with other PeriodIndex-ed objects
    >>> pd.concat([df2, df1], axis=1, keys=['a', 'b'])
    Works!

Additionally (and perhaps this should be raised as a separate issue) should the specific implementation of `pd.PeriodIndex._assert_can_do_setop` not raise if the `other` index is empty? Since `pd.Index([]).union(<instance of pd.PeriodIndex>)` results in an instance of `pd.PeriodIndex`.