Rewrite division as shift for unsigned numerators

Now only applies to unsigned expressions, since in C shift right is
implementation defined for signed types.