ENH: check for __array__ instead of ndarray subclasses when creating an Index

This allows custom ndarray-like objects which aren't actual ndarrays
to be smoothly cast to a pandas.Index:
https://github.com/pydata/pandas/issues/5460#issuecomment-44474502