Add divide(x, y, rounding_strategy) library function + tests.

In coming commits: converting to using this.
fix (update) some UI text
make vector3 use the new rounding strategies code
fix divide() to require integer argument types

and a fix in response in vector3
more tests for divide()
replace divide_rounding_towards_zero() with divide()
fix bounds-checked-ints with divide()
bounds checked int: be a bit more cautious with numeric_limits
units: add a way to use num and denom of unit-ed rationals

(This is important in some fiddly numeric code.)
units: improve rational support
add a practical-for-us-to-use uniform_int_distribution wrapper
add build comment
units: fix make_signed