Don't rewrite multiplication by 0 as 0.

This isn't safe when floats are involved as -1 * 0 is -0, not 0.
Add test case for zero multiplication.
Merge pull request #1641 from waywardmonkeys/fix-negative-zero-bug

Fix negative zero bug