We need to be able to replicate the `Sparkle` strategy's sorting and filtering behavior in a related cask audit, so this extracts the logic into reusable methods. This also stores `item.minimum_system_version` as a `MacOSVersion` object (instead of a string), so we can do proper version comparison (instead of naive string comparison) wherever needed.