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.)
Merge branch 'master' into unitizing1
units: improve rational support
Merge branch 'master' into unitizing1
slightly fix object_motion.cpp for units

It still totally doesn't compile, but this is a step on the way.
slightly fix tile_physics.cpp for units
improve specific_object_type_implementations.cpp and disorganized_stuff.cpp for units some
add a practical-for-us-to-use uniform_int_distribution wrapper
add build comment
Merge branch 'master' into unitizing1
improve specific_object_type_implementations.cpp for units

(it still doesn't quite compile and perhaps has a few units wrong)
units: fix make_signed