issue #24200: streamline version bumping

This file had about 6 disparate functions, which I've chopped up into 6 new files in the `util` directory.