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
Merge pull request #7270 from shoyer/use-__array__

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