BUG: Categorical doesn't show tzinfo properly
Closes #10713.
- [x] Check timedelta
- [x] Refactor not to import `DatetimeIndex` and `PeriodIndex` if possible.
- [x] Fix `categories` line break location
- [x] Check `Categorical` `Series` formatting
- [x] Check `Categorical` `DataFrame` formatting 
- [x] Fix `CategoricalIndex` formatting 
## CategoricalIndex problem (befor this PR)

```
import pandas as pd
idx = pd.period_range('2011-01-01 09:00', freq='H', periods=5)
idx = pd.Index(pd.Categorical(idx))
idx
# CategoricalIndex([359409, 359410, 359411, 359412, 359413], categories=[2011-01-01 09:00, 2011-01-01 10:00, 2011-01-01 11:00, 2011-01-01 12:00, 2011-01-01 13:00], ordered=False, dtype='category')
```
## Format differences (after this PR)

I left ordered category representation of `CategoricalIndex` as below because it has `ordered` repr separately.

```
pd.Categorical([1, 2, 3], ordered=True)
# [1, 2, 3]
# Categories (3, int64): [1 < 2 < 3]

pd.Series(pd.Categorical([1, 2, 3], ordered=True))
#0    1
#1    2
#2    3
# dtype: category
# Categories (3, int64): [1 < 2 < 3]

pd.CategoricalIndex([1, 2, 3], ordered=True)
# CategoricalIndex([1, 2, 3], categories=[1, 2, 3], ordered=True, dtype='category')
```

@jreback Thanks, fixed your points and it's ready for review. Checked `Categorical`, `Index`, `Series` and `DataFrame` outputs. 
 Thanks for comments. Added `CategoricalArrayFormatter` as `CategoricalFormatter` is already occupied, and also added `PeriodArrayFormatter` which doesn't exist. Pls check whether it meets your suggestion.
 minor comments
looks good
merge when ready 
