replace on Series with timezone-aware data breaks
replace (and by extension other masking operations) fail on Series with tz-aware data. Observing the following behavior:

``` python
# non-tz aware
In [23]: ser = pd.Series([pd.NaT, pd.Timestamp('2015/01/01')])

In [24]: ser
Out[24]: 
0          NaT
1   2015-01-01
dtype: datetime64[ns]

In [25]: ser.replace(pd.NaT, pd.Timestamp.min)
Out[25]: 
0   1677-09-22 00:12:43.145225
1   2015-01-01 00:00:00.000000
dtype: datetime64[ns]

# timezone-aware
In [26]: ser = pd.Series([pd.NaT, pd.Timestamp('2015/01/01', tz='UTC')])

In [27]: ser.replace(pd.NaT, pd.Timestamp.min)

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-27-cfc55c339a93> in <module>()
----> 1 ser.replace(pd.NaT, pd.Timestamp.min)

/home/env/local/lib/python2.7/site-packages/pandas/core/generic.py in replace(self, to_replace, value, inplace, limit, regex, method, axis)
   2994                 elif not com.is_list_like(value):  # NA -> 0
   2995                     new_data = self._data.replace(to_replace=to_replace, value=value,
-> 2996                                                   inplace=inplace, regex=regex)
   2997                 else:
   2998                     msg = ('Invalid "to_replace" type: '

/home/env/local/lib/python2.7/site-packages/pandas/core/internals.py in replace(self, **kwargs)
   2760 
   2761     def replace(self, **kwargs):
-> 2762         return self.apply('replace', **kwargs)
   2763 
   2764     def replace_list(self, src_list, dest_list, inplace=False, regex=False):

/home/env/local/lib/python2.7/site-packages/pandas/core/internals.py in apply(self, f, axes, filter, do_integrity_check, consolidate, **kwargs)
   2709                                                  copy=align_copy)
   2710 
-> 2711             applied = getattr(b, f)(**kwargs)
   2712 
   2713             if isinstance(applied, list):

/home/env/local/lib/python2.7/site-packages/pandas/core/internals.py in replace(self, to_replace, value, inplace, filter, regex)
    567                 return [self]
    568             return [self.copy()]
--> 569         return self.putmask(mask, value, inplace=inplace)
    570 
    571     def setitem(self, indexer, value):

/home/env/local/lib/python2.7/site-packages/pandas/core/internals.py in putmask(self, mask, new, align, inplace, axis, transpose)
    723 
    724             print
--> 725             np.putmask(new_values, mask, new)
    726 
    727         # maybe upcast me

TypeError: putmask() argument 1 must be numpy.ndarray, not DatetimeIndex
```

Believe this was introduced in 0.17.0, and might be related to https://github.com/pydata/pandas/issues/11693 - however, the patch in that issue doesn't appear to fix this.
