using to_dict with the 'records' orient produces different results from the default one
consider the following `df` 

```
df = pd.DataFrame({'d': pd.date_range('2018-01-01', freq='12h', periods=2)})
for col in df.select_dtypes(['datetime']):
    df[col] = pd.Series(df[col].dt.to_pydatetime(), dtype = 'object')
```

using the normal `to_dict` returns the wanted results with the native python types

```
print(df.to_dict())
{'d': {0: datetime.datetime(2018, 1, 1, 0, 0), 1: datetime.datetime(2018, 1, 1, 12, 0)}}
```

however doing it with a different orient, produces different results 
```
print(df.to_dict('records'))  # also true for the 'split' orient 
[{'d': Timestamp('2018-01-01 00:00:00')}, {'d': Timestamp('2018-01-01 12:00:00')}]
```

---

as a side note, it would be nice to have the ability to convert a dataframe or a series into a native types structure (no unlike `to_json`) 

---

versions:
pandas           : 0.25.2
numpy            : 1.17.3