Refactor seasons categorisation functions.

### Purpose:

To unify `add_season*` and `add_custom_season*`, reducing duplication of code and making the categorisation code easier to use and maintain.

### Action:

Following on from #480, this PR refactors the season categorisation code, deprecating the `add_custom_season*` functions in favour of adding their functionality to the existing season categorisation functions via a keyword argument `seasons`. The `add_custom_season_membership` function has no `add_season_membership` equivalent so is simply re-named.