BUG/API: Datetime-like Index.order reset freq
### DatetimeIndex / TimedeltaIndex

```
import pandas as pd
idx = pd.date_range('2011-01-01', '2011-05-01', freq='M')

# freq must be preserved, because ``DatetimeIndex`` is ordered when it has freq
idx.order()
# DatetimeIndex(['2011-01-31', '2011-02-28', '2011-03-31', '2011-04-30'], dtype='datetime64[ns]', freq=None, tz=None)

# freq must be preserved like idx[::-1]
idx.order(ascending=False)
# DatetimeIndex(['2011-04-30', '2011-03-31', '2011-02-28', '2011-01-31'], dtype='datetime64[ns]', freq=None, tz=None)

idx[::-1]
# DatetimeIndex(['2011-04-30', '2011-03-31', '2011-02-28', '2011-01-31'], dtype='datetime64[ns]', freq='-1M', tz=None)
```

Internally, `order` may use `take` when `return_indexer` is `True` and should be fixed also.
### PeriodIndex

Results in `TypeError` because it doesn't pass `freq` ( `PeriodIndex` without freq is meaningless ). Required to fix #7832 first to use the same flow as `DatetimeIndex`, I think.

```
idx = pd.period_range('2011-01-01', '2011-05-01', freq='M')
idx.order()
# TypeError: expected string or buffer

idx.order().freq is None
# True
```
