BUG: offsets.apply may return datetime
Currently, `offsets.appy`, `rollforward` and `rollback` returns `Timestamp` if argument is `Timestamp` or `np.datetime64`. 

If input is `datetime`, these functions return `datetime` or `Timestamp` inconsistently depending on internal process. It may better to always return `Timestanp`? 
### Affected Offsets
- 'pandas.tseries.offsets.Day'
- 'pandas.tseries.offsets.MonthBegin'
- 'pandas.tseries.offsets.FY5253Quarter'
- 'pandas.tseries.offsets.FY5253'
- 'pandas.tseries.offsets.Week'
- 'pandas.tseries.offsets.WeekOfMonth'
- 'pandas.tseries.offsets.Easter'
- 'pandas.tseries.offsets.Hour'
- 'pandas.tseries.offsets.Minute'
- 'pandas.tseries.offsets.Second'
- 'pandas.tseries.offsets.Milli'
- 'pandas.tseries.offsets.Micro'
