Series[datetime64/timedelta64] bool ops broken
```
dti = pd.date_range('2016-01-01', periods=3)
ser = pd.Series(dti)
tr = np.array([True, True, True])

>>> ser & tr
0    False
1    False
2    False
dtype: bool

>>> ser | ser
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pandas/core/ops.py", line 1047, in wrapper
    other = fill_int(other) if is_other_int_dtype else fill_bool(other)
  File "pandas/core/ops.py", line 1036, in <lambda>
    fill_bool = lambda x: x.fillna(False).astype(bool)
  File "pandas/util/_decorators.py", line 138, in wrapper
    return func(*args, **kwargs)
  File "pandas/core/generic.py", line 4443, in astype
    **kwargs)
  File "pandas/core/internals.py", line 3606, in astype
    return self.apply('astype', dtype=dtype, **kwargs)
  File "pandas/core/internals.py", line 3473, in apply
    applied = getattr(b, f)(**kwargs)
  File "pandas/core/internals.py", line 569, in astype
    **kwargs)
  File "pandas/core/internals.py", line 2603, in _astype
    return super(DatetimeBlock, self)._astype(dtype=dtype, **kwargs)
  File "pandas/core/internals.py", line 657, in _astype
    values = astype_nansafe(values.ravel(), dtype, copy=True)
  File "pandas/core/dtypes/cast.py", line 668, in astype_nansafe
    to_dtype=dtype))
TypeError: cannot astype a datetimelike from [datetime64[ns]] to [bool]
```

It isn't clear to me what the desired behavior is here.

Also operating with an Index falls through to a case that I think is intended to only catch scalars:

```
tdi = pd.TimedeltaIndex(['1 Day', '2 Days', 'NaT'])
ser = pd.Series(tdi)
>>> ser & tdi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pandas/core/ops.py", line 1062, in wrapper
    res_values = na_op(self.values, other)
  File "pandas/core/ops.py", line 1020, in na_op
    if not isna(y):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
```