DEPR: DatetimeIndex/PeriodsIndex +/- ops (GH9094)
closes #9094
closes #9095 

deprecate `DatetimeIndex/PeriodIndex` `+/-` ops which are set ops. In a future version `-` will produce a `TimeDeltaIndex` and `+` a `TypeError`

surprise surprise, this was not actually tested anywhere AT ALL.
 Should the same be done for the other operations?

Eg addition also still does a set operation:

```
In [12]: dti + dti
Out[12]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-01-01, 2012-01-02]
Length: 2, Freq: D, Timezone: None
```

Addition is not a usefull operation for datetimes as a numeric operation, but better to be consistent in the fact it will not be a set operation in the future I think.
 @jorisvandenbossche yes, `dti + dti` should be a `TypeError` (in 0.17.0) to be consistent. (as is `dti + dt` now). will update.
 This should then also close #9095 I think.
 hmm, I guess we changed these all to `NotImplementedError` (which is actually more correct). but most are still `TypeErrors`...hmm

```
In [3]: pd.date_range('20130101',periods=5)+Timestamp('20140101')
NotImplementedError: 
```

```
In [4]: pd.date_range('20130101',periods=5)+Timestamp('20140101').to_datetime64()

TypeError: ufunc add cannot use operands with types dtype('<M8[ns]') and dtype('<M8[ns]')
```

@shoyer IIRC did you change these? (I know you suggested we did....)
 `NotImplementedError` is wrong -- `pd.date_range('20130101',periods=5)+Timestamp('20140101')` should be a `TypeError`.

I believe I suggested changing some operations like `__add__` to return `NotImplemented`, but that's not `NotImplementedError` and it's something that the user should never see -- Python should translate it into a `TypeError` before it reaches the user.
 @shoyer yeh I just looked at the code and everything is tested as a  `TypeError`, so maybe this odd that it is showing up like this.
 I think this is implemented as an `NotImplementedError`, because this is within `DatetimeIndexOpsMixin` its method `_add_datelike`, and this method should be overwritten in `DatetimeIndex`? (because this should work for `TimedeltaIndex`)? 

And indeed, in `TimedeltaIndex` it is overwritten (https://github.com/pydata/pandas/blob/899212982af5978a5991dfd9517f3a0212bcdaa8/pandas/tseries/tdi.py#L316), but not in DatetimeIndex
