additional improvements to `with transform()` context mgr

- the various transformation functions now return an NSAffineTransform
(before they were void)
- the context manager collects any affine transforms in its args list
and applies their inverses at the end of the block
- as a result `with transform(...)` invocations no longer need to chop
up the args to the inline transformations. e.g., `translate(12,34)` is
now a valid arg, rather than the previous `translate, (12,34)` spelling
added graphics state for setting rotation units

- calling rotate(DEGREES/RADIANS/PERCENT) now defines the scale
subsequent calls will use for interpreting numeric args.
- updated transform() to reset the rotation units at the end of the
block