ENH/BUG: Period and PeriodIndex ops supports timedelta-like

Must be revisited after #7954 to remove ``_skip_if_not_numpy17_friendly``

Closes #7740.

Allow ``Period`` and ``PeriodIndex`` ``add`` and ``sub`` to support ``timedelta``-like. If period freq is ``offsets.Tick``, offsets can be added if the result can have same freq. Otherwise, ``ValueError`` will be raised.
```
idx = pd.period_range('2014-07-01 09:00', periods=5, freq='H')
idx + pd.offsets.Hour(2)
# <class 'pandas.tseries.period.PeriodIndex'>
# [2014-07-01 11:00, ..., 2014-07-01 15:00]
# Length: 5, Freq: H

idx + datetime.timedelta(minutes=120)
# <class 'pandas.tseries.period.PeriodIndex'>
# [2014-07-01 11:00, ..., 2014-07-01 15:00]
# Length: 5, Freq: H

idx + np.timedelta64(7200, 's')
# <class 'pandas.tseries.period.PeriodIndex'>
# [2014-07-01 11:00, ..., 2014-07-01 15:00]
# Length: 5, Freq: H

idx + pd.offsets.Minute(5)
# ValueError: Input has different freq from PeriodIndex(freq=H)
```

 If period freq isn't ``Tick``, only the same offset can be added. Otherwise, ``ValueError`` will be raised.

```
idx = pd.period_range('2014-07', periods=5, freq='M')
idx + pd.offsets.MonthEnd(3)
# <class 'pandas.tseries.period.PeriodIndex'>
# [2014-10, ..., 2015-02]
# Length: 5, Freq: M
idx + pd.offsets.MonthBegin(3)
# ValueError: Input has different freq from PeriodIndex(freq=M)
```
I feel this gets more complicated, because each ``_add_delta`` handles its internal representation (UTC time in ``DatetimeIndex and ordinal in ``PeriodIndex``).
https://github.com/pydata/pandas/blob/master/pandas/tseries/index.py#L615