Fix a bug with floating point multiplication rounding

Only check single shifted out bit when considering rounding
Fix handling of subnormal multiplication results.

The previous check was broken because it checked for a zero significand (which can happen with
normalized numbers).  It now instead properly checks the hidden bit.