While this isn't strictly required (outside of rulesets, potentially),
I think it's best that we keep these counts in a sane state.
Right now, it will remove any excess. Arguably, in the case an entry is
found with too many, we should wipe all entries and re-populate the
defaults. Interested in opinions on that before merging. See
https://github.com/ppy/osu/discussions/15925 for an example where wiping
may be the more appropriate behaviour.
Changes all usages of `KeyCombination.ReadableString()` to
`ReadableKeyCombinationProvider.GetReadableString()`.
Subscribing to `KeymapChanged` is only required in `KeyButton`.
All other places query `GetReadableString()` every time.