Extend GEN-UNSIGNED-DIV-BY-CONSTANT-EXPR to work for ceiling too.

A different multiplier is used so that ceiling(x/y) can be converted
to floor(m*x/2^s)+1. This doesn't work when x = 0 or y > 2^(w-1), so
those are handled separately.

TODO: More efficient method for calculating the remainder in the unsigned
ceiling transform.
More efficient remainder calculation.

Calculate the remainder in the unsigned ceiling transform in two steps
so that inline arithmetic is used (X - (Q-1)*Y - Y instead of (X - Q*Y)).
To do this, we need the value of the quotient before it is increased by one,
so calculate the final quotient outside of GEN-UNSIGNED-DIV-BY-CONSTANT-EXPR.
Place the check for X = 0 outside too.
Clean up code in GEN-UNSIGNED-DIV-BY-CONSTANT-EXPR.
Fix incorrect ceilinged division when Y > 2^(W-1).

The result can be either 0 1 or 2, not only 0 or 1.
Also extend the test for division correctness to detect
this problem (by testing with dividends larger than 2^(W-1)).
Move ceilinged code generator to separate function.

It is easier to extend it to signed ceiling when it is
separated from truncate.