Implement business_start/end cases for shift_months
Unifies `apply_index` implementations for MonthEnd/MonthBegin, plus extends them to BMonthEnd and BMonthBegin.

Unifies `onOffset` implementations for QuarterEnd/BQuarterEnd, plus extends them to QuarterBegin/BQuarterBegin.

Implements a `cdef` version of `monthrange`.