ENH: Cast ndarray-like datetime64 arrays to Index properly

It turns out that the ndarray-like arrays of dtype datetime64 were
not being properly cast to an Index, because -- due to a bug with
np.datetime64 -- calling np.asarray(x, dtype=object) if x is an
ndarray of type datetime64 results in an *integer* array.

This PR adds tests and a work around to pd.Index.__new__.

Related #5460