BUG: Assorted DatetimeIndex bugfixes
Bit of a hodge-podge.

- Deprecate `time_rule` in `offsets.generate_range`
- Improve error messages if NaT gets passed to date_range, or in validate_frequency (closes #11587)
- Preserve timezone in DatetimeIndex->CategoricalIndex->DatetimeIndex (closes #18664)
- Preserve freq when indexing DTI/TDI with Ellipsis (closes #21282)
- [x] closes #11587

@TomAugspurger nothing here is urgent, so if this overlaps with DTA it can stay on the backburner.