DEPR: Index.ravel returning an ndarray
- [x] closes #19956
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Make Index.ravel() behavior match every other ravel() method in existence.
nice! @jbrockmendel I don't think there was consensus on changing `ravel` to return an Index. See the original discussion at https://github.com/pandas-dev/pandas/issues/19956, and you actually did a similar PR before (but to return the EA, https://github.com/pandas-dev/pandas/pull/32641) where I said the same.

- The Index method will now be inconsistent with the Series method
- What's the use case of actually needing an `Index.ravel` method? > The Index method will now be inconsistent with the Series method

I would be OK changing the deprecation so to say the future behavior is to match self._values.ravel, matching Series behavior.

> What's the use case of actually needing an Index.ravel method?

The same as the use case for Series.ravel: you want to write code that is ndarray/index/series-agnostic > I would be OK changing the deprecation so to say the future behavior is to match self._values.ravel, matching Series behavior.

IMO that sounds as a better option. Having consistency between Series and Index here would be good I think (although Index is more array-like than Series ..)

I am still skeptical about the need for this method at all, though (you can also do a ndim check if you eg want to ensure the array-like is 1D or converted to 1D, see eg Tom's comment at https://github.com/pandas-dev/pandas/issues/19956#issuecomment-433427374) > I am still skeptical about the need for this method at all

as there is a top level numpy function for this https://numpy.org/doc/stable/reference/generated/numpy.ravel.html.

In the future, with \_\_array_function__ implemented, could allow much simplification of the pandas API.

so I _think_ OK to deprecate the method, in favour of np.ravel() support.

```
>>> pd.__version__
'1.2.0.dev0+765.g401d7a142c'
>>>
>>> idx = pd.Index([1, 2, 3])
>>>
>>> np.ravel(idx)
array([1, 2, 3], dtype=int64)
>>>
>>> type(_)
<class 'numpy.ndarray'>
>>>
```

so we could use np.ravel to get the current behaviour, of implement \_\_array_function__ if we wanted to return a Index instead. Also for `np.ravel` support through `__array_function__`, we would need to decide on the return value, though (so I think a large part of the discussion applies to that as well). 

Because `np.ravel(index)` doesn't necessarily (technically) need to return an ndarray, it could also return an Index (as the warning in this PR proposes) or an EA.