Fix for issue #204

If Mul dictionary contains numbers we add a `*` in printing
Fix the issue using iterators

Problem arose when `coef_` and first item in the `dict_` were both numeric. Previously
`*` sign was not inserted between `coef` and the first entry in the `dict_`.
Add tests for printing

Also removed the check for `dict_.empty()` as it is checked as an assertion
insied constructor.
Add brackets around exponent when the exponent is not an `Integer` or a `Symbol`
Merge pull request #205 from thilinarmtb/Fix_#204_print_error

Fix for issue #204