Add new functions: SB!KERNEL:%(SIGNED)-MULTIPLY-HIGH-AND-SHIFT.

These perform a multiply-high and a shift on signed and unsigned words.
They give a little performance boost for fixnums over calling mulhi and
shift separately.
VOPs are implemented for x86, x86-64, PPC and ARM. The PPC and ARM
code hasn't been tested yet.
Replace the multiply-high and shift calls with these functions in the
constant division transforms.
Add transform for unsigned truncated division by fractions.

Modify CHOOSE-MULTIPLIER so that it can be used for multiplying
by fractions, and add a code generator that creates a simpler expression
for truncated multiplication of X by the constant rational A/Y.
The multiplier can get very large, so the generator tries to perform
the operations in multiple smaller steps whenever possible. For details,
see the comments in the generator or Paul Khuong's "Fast Truncated
Multiply-Divide by Positive Constants".
Add comparison-based quotient calculation to the unsigned division generator.
Add transform for signed integer-rational truncated division.

Add new function: SB!KERNEL:%SIGNED-MULTIPLY-AND-ADD-HIGH. It multiplies
two args, adds a third arg to the product, and returns the high bits of the
sum. It is implemented with VOPs on x86(-64), ARM and PPC.
Use it to carry out the 2N-bit multiply-shift similarly as in the unsigned
case.
Also make the examples easier to read by using macros.
Extend the ceiling and floor generators for rational numbers.

Extend CHOOSE-CEILING/FLOOR-MULTIPLIER so that they be used to replace
ceilinged/floored multiplication by A/Y, and rewrite the ceiling/floor
generators to work with rational divisors too.
Instead of using (if t ...) or (if nil ...) when the dividend can only
be negative or positive, don't do any condition checking at all.
This doesn't cause any performance changes, since the comparison
would have been removed during compilation anyway, but it shortens
the code a little and makes the examples more human-readable.

Also add a new function: GEN-MULTIPLY-SHIFT-EXPR. Use calls to this
function in the div-by-mul code generators instead of duplicating code.
Add transform for a trivial case of integer-rational division.

This converts division by 1/Y to multiplication. It is handled
separately because the remainder is always 0, so it doesn't have
to be calculated.
Add a section on div-by-mul in the internals manual.

Also update the chapter numbers in some of the comments.