ENH/BUG: DatetimeIndex and PeriodIndex in-place ops behaves incorrectly

Fixes 2 issues related to ``DetetimeIndex`` and ``PeriodIndex`` ops.

- Addition / subtraction between ``PeriodIndex`` raise ``TypeError`` (Closes #3367).
```
pidx + pidx
# TypeError: unsupported operand type(s) for +: 'PeriodIndex' and 'PeriodIndex'
```

- In-place addition / subtraction doesn't return the same result as normal addition / subtraction.  Specifically, ``PeriodIndex`` in-place operation results in ``Int64Index`` (Closes #6527)
```
didx = pd.date_range('2011-01-01', freq='D', periods=5)

# This results shift (expected)
didx + 1
# <class 'pandas.tseries.index.DatetimeIndex'>
# [2011-01-02, ..., 2011-01-06]
# Length: 5, Freq: D, Timezone: None

# This result adding 1 unit (nano second) (NG)
didx += 1
didx 
# <class 'pandas.tseries.index.DatetimeIndex'>
# [2011-01-01 00:00:00.000000001, ..., 2011-01-05 00:00:00.000000001]
# Length: 5, Freq: None, Timezone: None
```
OK, added few more test both for addition and subtraction. There seems to be a problem for non-monotonic ``PeriodIndex.union`` and ``diff``. I'll dig in...