BUG: Raise TypeError for invalid calendar types in CustomBusinessDay (#60647)
- Closes #60647

### Bug Description
Previously, if an invalid `calendar` argument was passed to `CustomBusinessDay` (e.g., a `pandas_market_calendars` object), it was silently ignored. This resulted in potentially incorrect behavior without warning, which could lead to confusion and incorrect results.

### What This Fix Does
- Adds a strict type check in `offsets.pyx` to ensure the `calendar` parameter is either a `numpy.busdaycalendar` or `AbstractHolidayCalendar`.
- If the type is invalid, a `TypeError` is raised with a clear error message.
- This aligns with expected behavior and helps prevent incorrect usage.

### Tests Added
- ✅ New unit test `test_invalid_calendar_raises_typeerror` added to `test_custom_business_day.py` to assert that an invalid calendar raises a `TypeError`.
- ✅ Existing test `test_calendar` was updated to construct a valid `np.busdaycalendar` from `USFederalHolidayCalendar` dates.
- ✅ All 8 tests in this module now pass successfully.

### Why This Matters
Silently ignoring invalid input is dangerous and can introduce subtle bugs. This fix ensures strict input validation and protects downstream consumers from incorrect assumptions.

### Checklist
- [x] Bug fix added and tested
- [x] New test added for reproducibility
- [x] All existing + new tests pass locally via `pytest`
- [x] Clear commit message: `"BUG: Raise TypeError for invalid calendar types in CustomBusinessDay (#60647)"`
- [x] pandas test structure followed

We don't accept AI generated pull requests so closing