do scaling on a Path before constructing PathLike in 'rect' (fixes #43)

We used to have

  rect w h = unitSquare # scaleX w # scaleY h

since unitSquare can produce any PathLike.  The new code
instead uses (unitSquare # scaleX w # scaleY h) to specifically
produce a Path, which is then deconstructed and passed into
'pathLike' to create any PathLike.

The difference is that while scaling by zero works fine for
Path it does not work very well for, say, Diagrams (leading to
NaNs or worse).  This way, we force the scaling to happen on a
Path, where we know it will behave properly, and then use the
resulting geometry to construct an arbitrary PathLike.
Merge pull request #70 from diagrams/issue43

do scaling on a Path before constructing PathLike in 'rect' (fixes #43)