Apply method broken for empty integer series with datetime index
#### Code Sample, a copy-pastable example if possible

```python
# Your code here
>>> pd.Series([], index=pd.date_range(start="2018-01-01", periods=0), dtype=int).apply(lambda x: x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/.../lib/python3.6/site-packages/pandas/core/series.py", line 2526, in apply
    index=self.index).__finalize__(self)
  File "/.../lib/python3.6/site-packages/pandas/core/series.py", line 264, in __init__
    raise_cast_failure=True)
  File "/.../lib/python3.6/site-packages/pandas/core/series.py", line 3228, in _sanitize_array
    subarr = _try_cast(data, False)
  File "/.../lib/python3.6/site-packages/pandas/core/series.py", line 3163, in _try_cast
    subarr = np.array(subarr, dtype=dtype, copy=copy)
ValueError: cannot convert float NaN to integer
```
#### Problem description

For some reason, `apply` method doesn't work for empty series with datetime index and dtype int. Obviously, it should work.


#### Expected Output

```python
>>> pd.Series([], index=pd.date_range(start="2018-01-01", periods=0), dtype=int).apply(lambda x: x)
Series([], Freq: D, dtype: int64)
```

#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit: None
python: 3.6.5.final.0
python-bits: 64
OS: Linux
OS-release: 4.14.42
machine: x86_64
processor: 
byteorder: little
LC_ALL: None
LANG: en_GB.UTF-8
LOCALE: en_GB.UTF-8

pandas: 0.22.0
pytest: None
pip: None
setuptools: 39.0.1
Cython: 0.28.1
numpy: 1.14.2
scipy: 1.0.1
pyarrow: None
xarray: None
IPython: None
sphinx: None
patsy: None
dateutil: 2.6.1
pytz: 2018.3
blosc: None
bottleneck: 1.2.1
tables: 3.4.2
numexpr: 2.6.4
feather: None
matplotlib: None
openpyxl: 2.5.2
xlrd: 0.9.4
xlwt: 1.3.0
xlsxwriter: None
lxml: 4.2.1
bs4: 4.6.0
html5lib: 1.0.1
sqlalchemy: 1.2.6
pymysql: None
psycopg2: None
jinja2: None
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None

</details>
