Fix for issue #204

If Mul dictionary contains numbers we add a `*` in printing
I know we weren't doing it before, but when you are at it, could you add actual tests for the string? I.e. something like `assert(r1->__str__() == "4*5^(1/2)")`. That way it will be clear that it works and that further refactoring won't break things.