Prefer the UIA value over the UIA range value when reporting value, and respect minum and maximum values for ranges (#12727)
1. For UIA controls that implement a RangeValuePattern and a ValuePattern, the RangeValuePattern gives a numerical presentation of the value in a range whereas the value could also have a textual representation exposed in the ValuePattern. NVDA prefered the numerical representation, which doesn't make much sense and isn't according to how Narrator, JAWS and LegacyIAccessiblePattern expose the value.
2. NVDA insisted on correcting every range to a 0--100 range, even though UIA could specify different minimum and maximum values in the rangeValue pattern.
3. Range value patterns were rounded up to 4 digits and then converted to an integer. This resulted in 4.9998 resulting into an integer value of 4 instead of a rounded value of 5.
Description of how this pull request fixes the issue:
1. Swapped the order of methods the value is constructed. NVDA first tries the ValuePattern, than if that's empty, it uses the RangeValuePattern.
2. No longer take the minimum and maximum value into account when working with a range value and report the value as a percentage, but report the real value exposed by the pattern.
3. The range value pattern value is now rounded properly