Add signed truncate transform.

Make a truncate transformer for the case where the arguments are
signed words. Add new function %SIGNED-MULTIPLY-HIGH to be able to
carry out the calculations.
TODO: Find a better implementation for  %SIGNED-MULTIPLY-HIGH,
optimize the signed transform some more.
Add tests to the truncate optimizer for signed words.
Use direct multiplication in signed truncate transform when possible.
Change precision argument to take negative values into account.
Add test cases in the muldiv test for the range of the dividend.

Add a case that produced incorrect results before precision was fixed.
Also add random ranges.