BUG/REG: Passing Index to array-expected cython functions fails
Until recently many pandas cython functions had signatures like:

```
cpdef funcname(ndarray[object] values, ...)
```

In an effort to follow cython's recommendations, many of these have been changed to:

```
cpdef funcname(object[:] values, ...)
```

It looks like these are breaking in places where `Index` objects get passed to these functions.  Best guess is that because Index implements `__array__`, cython was able to silently cast it previously.  Now I'm seeing:

```
>>> dti = pd.date_range('2016-01-01', periods=3).tz_localize('Europe/Brussels')
>>> TimedeltaIndex(dti.tz_localize('Europe/Brussels'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pandas/core/indexes/timedeltas.py", line 167, in __new__
    data = to_timedelta(data, unit=unit, box=False)
  File "pandas/core/tools/timedeltas.py", line 94, in to_timedelta
    errors=errors, name=arg.name)
  File "pandas/core/tools/timedeltas.py", line 143, in _convert_listlike
    unit=unit, errors=errors)
  File "pandas/_libs/tslibs/timedeltas.pyx", line 217, in pandas._libs.tslibs.timedeltas.array_to_timedelta64
    def array_to_timedelta64(object[:] values, unit='ns', errors='raise'):
  File "stringsource", line 653, in View.MemoryView.memoryview_cwrapper
  File "stringsource", line 348, in View.MemoryView.memoryview.__cinit__
TypeError: 'Index' does not have the buffer interface
```

In this particular case the fact that it raises is OK, but it definitely not raising the right exception.  More pressing is the question of what else I have silently broken.
