Dimension trips up int/float/long sniffers

- i suspect these are not the only places an isinstance(…,
(int,float,long)) is going awry
textpath() now handles alignment properly

- before, non-LEFT alignments would only work if you also specified a
`width` arg
the canvas has an _nsImage property again

- useful in that it allows for: image(canvas, 10, 20) and the like
better arg parsing for Image constructor

- supports the `image` kwarg again (though it’s easier to just pass the
nsimage as the first positional arg)
- i think it’s doing a better job of merging bounds args and attrs
cloned from a copied Image grob now (but i’m not 100% on that)
updated to use plotdevice syntax
unwildcarded imports
look at user's login shell to determine $PATH