Closes https://github.com/ppy/osu/issues/29492.
I'm not immediately sure why this happened, but some old locally
modified beatmaps in my local realm database have a `BeatDivisor` of 0
stored, which is then passed to
`BindableBeatDivisor.SetArbitraryDivisor()`, which then blows up.
To stop this from happening, just refuse to use values outside of a sane
range.
A custom divisor like 24 or 32 will result in a range containing
many divisors that are already in the `Common` and `Triplets` presets.
When this happens, it can become impossible to cycle between presets,
because the preset can only be changed if the new divisor isn't already
contained within the current preset's range.
Three bindables are left which don't have this overriden due to them
already not having a value-only constructor and not supporting
`GetBoundCopy()` properly:
- `BeatmapDifficultyCache.BindableStarDifficulty`.
- `TotalScoreBindable`
- `TotalScoreStringBindable`
I could add support for them by passing the required data to them, as
they seem to be able to have that shared, but I'm hesitant to support
something which was already broken and never used, not sure.