TST: Add astype_nansafe datetime tests
Adds tests for `astype_nansafe` in situations where we can't perform a datetime casting because of a precision mismatch:

```
arr                                                                             
# array(['2018-01-01'], dtype='datetime64[D]')

arr.view(np.int32)                                                              
# array([17532,     0], dtype=int32)

arr.view(np.float32)                                                            
# array([2.4568e-41, 0.0000e+00], dtype=float32)
```

Related to https://github.com/pandas-dev/pandas/pull/28492
how is this PR distinct from #28492 > how is this PR distinct from #28492

I was thinking it was worth treating separately since that PR deals with `NaT` specifically whereas this was testing other paths (non-missing values that nonetheless can't be cast) without any logic changes i would just close this and merge #28492 