rtl: Fix issue #12: mulhs_i returns wrong value

Stage 1 of the floating point pipeline was sign extending
multiply operands, but the ports were only 32 bits wide, so
it was truncated again. Moved this logic to stage 2 and
did the extension right before the multiply.