Relax product and quotient constraints.

Since interval multiplication and division is not defined when c == 0 or
d == 0, we have to determine some default action. We can't narrow the
variable, but it's not always invalid. If the value is a singleton and
is zero, then we know we don't have a solution. If the interval is
wider, we may have a solution after narrowing it down.
Fix division by zero logic.
Remove symmetric constraints.

Difference can be expressed as sum, and quotient can be expressed as
product with the additional constraint that the denominator is not equal
to zero in any solution. For now we create an extra hidden variable and
add an inequality constraint. If we add NotEqualToConstant constraints
in the future we can replace it with that (not sure if it is more
elegant that way).