PERF: use .values in index difference
The existing `.difference` method 'unboxed' all the objects, which has a severe performance impact on `PeriodIndex` in particular. 

``` python

In [3]: long_index = pd.period_range(start='2000', freq='s', periods=1000)

In [4]: empty_index = pd.PeriodIndex([],freq='s')


In [24]: %timeit long_index.difference(empty_index)

# existing:
1 loops, best of 1: 1.02 s per loop
# updated: 
1000 loops, best of 3: 538 µs per loop
```

...so around 2000x

I haven't worked with asv or the like - is this a case where a test like that is required?
