Implement %SIGNED-MULTIPLY-AND-ADD-HIGH on other architectures.

Add VOPs for PPC and ARM, and a (less efficient) implementation for
the remaining architectures.
Update the signed mul-by-frac generator to use this function only
when it's more efficient than generic multiplication and shifting.

TODO: Some testing on ARM and PPC.