BUG: Series/Index results in datetime/timedelta incorrectly if inputs are all nan/nat like
- [x] closes #13467  
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`

## [Current coverage](https://codecov.io/gh/pydata/pandas/pull/13477?src=pr) is **84.33%**

> Merging [#13477](https://codecov.io/gh/pydata/pandas/pull/13477?src=pr) into [master](https://codecov.io/gh/pydata/pandas/branch/master?src=pr) will not change coverage

``` diff
@@             master     #13477   diff @@
==========================================
  Files           138        138          
  Lines         51092      51092          
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
  Hits          43087      43087          
  Misses         8005       8005          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last updated by [c2cc68d...a017a8c](https://codecov.io/gh/pydata/pandas/compare/c2cc68d6eb233bc74c6bd032650704030c4b9a9d...a017a8c2f84ecfdd8243e2a4a3215a6ca7c43af3?src=pr)
 @sinhrks puzzled why this fixed things as all you did was move something
 ATM, it doesn't affect to the behavior. However, I found some inconsistency when I adding the test. Updated in #13467.
 ok as I commented on the other issue, I think all -> NaT/nan should be M8.
 @sinhrks ready to merge? or is there still an open question on this
 @jreback Updated based on #13467, and found that there is a test which expect `np.timedelta('nat')` is regarded as `timedelta` dtype (I think it's natural)
- https://github.com/pydata/pandas/blob/master/pandas/tests/series/test_quantile.py#L42

How about skipping only `np.nan` and `pd.NaT` in `infer_dtype`? I mean:
- `[pd.NaT, np.datetime64('nat')]` -> datetime
- `[pd.NaT, np.timedelta64('nat')]` -> timedelta
- `[np.datetime64('nat'), np.timedelta64('nat')]` -> mixed (object)
 yeah that looks right

the problem is we can't know definitively the inferred type if we only have pd.NaT (or just np.nan for that matter)

so I suppose object is correct in those cases (though might break things)
 Yeah. `pd.NaT` should be ragarded as `datetime` in all nan-like case, if not specified otherwise (no `np.datetime` or `np.timedelta`).
- `[pd.NaT, np.nan]` -> datetime (it results in `timedelta` on current master, NG)
- `[np.nan, pd.NaT]` -> datetime (OK on current master)
- `[pd.NaT, pd.NaT]` -> datetime
 Updated based on the above discussion.
 @sinhrks looks really good. esp all of the added tests! just a couple of very minor questions. ping when ready.
 Now all green.
 IIRC this was green. but rebase and ping.
 @jreback @jorisvandenbossche rebased, and all green.
 @sinhrks Thanks!
