ENH: to_dict(orient="index", into=T) returns T[K, dict], expecting T[K, T]
- [x] I have checked that this issue has not already been reported.
- [] I have confirmed this bug exists on the latest version of pandas.
- [x] (optional) I have confirmed this bug exists on the master branch of pandas.

---

#### Code Sample, a copy-pastable example

Live at https://repl.it/@TomGoBravo/RoughUncommonDatabase
```python
import pandas as pd
import numpy as np
from collections import OrderedDict

df = pd.DataFrame(
    np.random.randint(10, size=(3, 2)),
    columns=list('AB'),
)

print(df.to_dict(orient='index', into=OrderedDict))
# Today this outputs something like:
# OrderedDict([(0, {'A': 7, 'B': 9}),
#              (1, {'A': 8, 'B': 9}),
#              (2, {'A': 9, 'B': 0})])
# but I'm expecting the values to be OrderedDict too instead
# of {}
```

#### Problem description

I expected the `into` parameter to be used for all dicts returned by to_dict but the implementation for orient="index" has `dict` hard-coded. A work around is fairly simple but thought I'd report the issue.

#### Expected Output

I'm expecting the values of the indexed mapping to also be of type `into`, not `dict`. The fix is replacing `dict` at https://github.com/pandas-dev/pandas/blob/master/pandas/core/frame.py#L1503 with `into_c`. I tried changing this line of code and re-ran the `test_fast.sh`. It didn't seem to break any tests, I get `78277 passed, 8446 skipped, 1000 xfailed, 31 warnings in 967.05s (0:16:07)` vs `78277 passed, 8446 skipped, 1000 xfailed, 31 warnings in 1546.42s (0:25:46)` running master with no change.

