Add new function: %LOSE-WORD-DERIVED-TYPE.

This returns its argument, but sets the derived type back to WORD. This
is needed for the fixnum optimization in GEN-UNSIGNED-DIV-BY-CONSTANT-EXPR
to remove unnecessary shifting.
Previously, before the mask was applied, the compiler converted the number
into a fixnum when its derived type allowed it, and then
%TAGGED-WORD-TO-FIXNUM converted it back, leading to two unnecessary shifts.

TODO: Find a better/cleaner way of doing this, if possible.
Restrict the use of the fixnum optimization.

If the optimization would result in an N+1-bit multiplier (because of
the wider range of X), don't use it. Also omit it if we can perform
direct multiplication without it.