API: Datetime-like indexes `summary` should output the same format
Related to #6469. Made all datetime-like indexes `summary` should output the same format.
#### Before

```
didx = pd.date_range('2014-12-20', freq='M', periods=3)
pidx = pd.period_range('2014-12-20', freq='M', periods=3)
tdidx = pd.timedelta_range(start='1 days', freq='D', periods=3)

didx.summary()
# DatetimeIndex: 3 entries, 2014-12-31 00:00:00 to 2015-02-28 00:00:00
# Freq: M

pidx.summary()
# PeriodIndex: 3 entries, 2014-12 to 2015-02

tdidx.summary()
# TimedeltaIndex: 3 entries, '1 days' to '3 days'
# Freq: <Day>
```
#### After
- `DatetimeIndex` and `PeriodIndex` use `_format_func`. This made `DatetimeIndex` not to output hour/minutes.. when its frequency is more than a day.
- `PeriodIndex` outputs its `freq`
- `TimedeltaIndex` has no changes.

```
# DatetimeIndex: 3 entries, 2014-12-31 to 2015-02-28
# Freq: M

# PeriodIndex: 3 entries, 2014-12 to 2015-02
# Freq: M

# TimedeltaIndex: 3 entries, '1 days' to '3 days'
# Freq: <Day>
```

somewhat separately the freq printing for TimeDeltaIndex is showing the actual obj and not the string repr
 Yeah, `TimedeltaIndex.freqstr` is not compat with others. Can I fix this in the same PR, or shoudld be separate?

```
# DatetimeIndex
didx.freqstr
# M

# TimedeltaIndex
tdidx.freqstr
# <Day>
```
 I think u can fix it here 
it shouldn't break anything (if it gets too complicated do a separate one)
 @jreback, @jorisvandenbossche 
Updated, could you check?
 Looks good to me!
 thanks @sinhrks 
