API: Add CalendarDay ('CD') offset
- [x] closes #22274
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Adds `CalendarDay` and `'CD'` offset and alias respectively and changes `Day` (`'D'`) in `date_range` to respect calendar day. 

With regards to `CalendarDay` added tests for:
- `CalendarDay` arithmetic with itself, datetimes, and timedeltas (which should raise)
- `'CD'` with use in `date_range` and `timedelta_range` (which should raise)
- resampling with `'CD'`

Also refactored `_generate_range ` for `date_range` since we no longer have to check for `Day`
