Merge function lost compatibility between NaNs and NaTs from pandas 0.22.0 to 0.24.1
#### Code demonstrating lost of compatibility between NaNs and NaTs from pandas 0.22.0 to 0.24.1

The introduction of an early control in the merge function based on the dtype, lost the compatibility between NaN and NaT offered in previous versions. This compatibility is described in the following pandas documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html.

In pandas version 0.22.0, the merge between datetime and NaN(s) is not raising an exception, as demonstrated in the following code:
```python
import pandas as pd
import numpy as np

print(pd.__version__)
# 0.22.0

df1 = pd.DataFrame({
    'some_date': [pd.datetime(2019, 3, 1), pd.datetime(2019, 3, 2)],
    'id': [1, 2]
})

df2 = pd.DataFrame({
    'empty_date': [np.nan],
})

print(df1.dtypes)
# id                    int64
# some_date    datetime64[ns]
# dtype: object

print(df2.dtypes)
# empty_date    float64
# dtype: object

df_merged = pd.merge(df1, df2, left_on=['some_date'], right_on=['empty_date'])

print(df_merged)
# Empty DataFrame
# Columns: [id, some_date, empty_date]

print(df_merged.dtypes)
# id              int64
# some_date      object
# empty_date    float64

df_merged = pd.merge(df1, df2, left_on=['some_date'], right_on=['empty_date'], how='left')

print(df_merged)
#    id            some_date  empty_date
# 0   1  2019-03-01 00:00:00         NaN
# 1   2  2019-03-02 00:00:00         NaN
```
But in pandas version 0.24.1, the merge between datetime and nan(s) is raising the exception: _ValueError: You are trying to merge on datetime64[ns] and float64 columns. If you wish to proceed you should use pd.concat, as demonstrated next:_. 
One way to overcome this problem is to convert the column from object to datetime using _pd.to_datetime_
```python
import pandas as pd
import numpy as np

print(pd.__version__)
# 0.24.1

df1 = pd.DataFrame({
    'some_date': [pd.datetime(2019, 3, 1), pd.datetime(2019, 3, 2)],
    'id': [1, 2]
})

df2 = pd.DataFrame({
    'empty_date': [np.nan],
})

print(df1.dtypes)
# some_date    datetime64[ns]
# id                    int64

print(df2.dtypes)
# empty_date    float64
# dtype: object

df_merged = pd.merge(df1, df2, left_on=['some_date'], right_on=['empty_date'])
# ValueError: You are trying to merge on datetime64[ns] and float64 columns. If you wish to proceed you should use pd.concat

# You can avoid the previous exception by converting to datetime, as follows:
df2['empty_date'] = pd.to_datetime(df2.empty_date)
print(df2.dtypes)
# empty_date    datetime64[ns]

df_merged = pd.merge(df1, df2, left_on=['some_date'], right_on=['empty_date'])
print(df_merged)
# Empty DataFrame

df_merged = pd.merge(df1, df2, left_on=['some_date'], right_on=['empty_date'], how='left')
print(df_merged)
#    some_date  id empty_date
# 0 2019-03-01   1        NaT
# 1 2019-03-02   2        NaT
```

#### Problem description

The typical case when you end up with NaNs in columns that you expect to be datetime is:
- If load an empty data set (empty csv file, empty database select statement, etc), the dtype of the datetimes in the dataframe are object.
- if you left join other dataframe to this empty dataset, you will end up with a new dataframe with datetime columns with NaN values and dtype objects
- Any further merge with that column will produce an exception.

To avoid this situation, in pandas 0.24.1., you have to convert any datetime column at the time of loading or before the merge. This is adding an extra unnecessary cost and produced a verbose code. Missing this conversion is prompt to generate future bugs if when empty datasets are loaded.
If this control cannot be reverted, then the description about compatibility between NaN and NaT should be clarified or deleted.

#### Expected Output

As described before, in the code section pandas version 0.22.0,

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

<details>

[paste the output of ``pd.show_versions()`` here below this line]

INSTALLED VERSIONS
------------------
commit: None
python: 3.7.1.final.0
python-bits: 64
OS: Darwin
OS-release: 18.2.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: None
LOCALE: en_GB.UTF-8

pandas: 0.24.1
pytest: None
pip: 10.0.1
setuptools: 39.1.0
Cython: None
numpy: 1.16.2
scipy: None
pyarrow: None
xarray: None
IPython: None
sphinx: None
patsy: None
dateutil: 2.8.0
pytz: 2018.9
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: None
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml.etree: None
bs4: None
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: None
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None
gcsfs: None
</details>
