MultiIndex.from_product does not properly handle a single arrays containing NaN or NaT
NaT and NaN get infilled in some strange way:

```
In [16]: pd.MultiIndex.from_product([pd.to_datetime(['2000-01-01', 'NaT', '2000-01-05'])])
Out[16]: DatetimeIndex(['2000-01-01', '2000-01-05', '2000-01-05'], dtype='datetime64[ns]', freq=None)

In [25]: pd.MultiIndex.from_product([[1.0, np.nan, 2.0]])
Out[25]: Float64Index([1.0, 2.0, 2.0], dtype='float64')

In [28]: pd.MultiIndex.from_product([[1.0, np.nan]])
Out[28]: Float64Index([1.0, 1.0], dtype='float64')
```

If the single array is all nulls, an error is raised:

```
In [26]: pd.MultiIndex.from_product([[np.nan, np.nan]])
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-26-a74dc8f094a4> in <module>()
----> 1 pd.MultiIndex.from_product([[np.nan, np.nan]])

/Users/shoyer/dev/pandas/pandas/core/index.py in from_product(cls, iterables, sortorder, names)
   4708
   4709         return MultiIndex(levels=[c.categories for c in categoricals],
-> 4710                           labels=labels, sortorder=sortorder, names=names)
   4711
   4712     @property

/Users/shoyer/dev/pandas/pandas/core/index.py in __new__(cls, levels, labels, sortorder, names, copy, verify_integrity, _set_identity, name, **kwargs)
   3898             else:
   3899                 name = None
-> 3900             return Index(levels[0], name=name, copy=True).take(labels[0])
   3901
   3902         result = object.__new__(MultiIndex)

/Users/shoyer/dev/pandas/pandas/core/index.py in take(self, indices, axis, allow_fill, fill_value)
   1223
   1224         indices = com._ensure_platform_int(indices)
-> 1225         taken = self.values.take(indices)
   1226         return self._shallow_copy(taken)
   1227

IndexError: cannot do a non-empty take from an empty axes.
```

The treatment of nulls seems to work correctly if the result has multiple levels.
