Transform.apply now works with geometry types

- now handles Point/Size/Region (and their NS equivalents)
additional NSGeometry imports

- added NSPoint & NSSize
measure() now works with the canvas global

- measure(canvas) is an alias for canvas.size
TransformMixin now handles unit conversion

- added a pair of helper methods to convert between postscript points
and whatever unit was set in the initial call to size()
canvas-unit conversion now handled within Grobs

- setting a non-px unit is no longer just a matter of scaling the canvas
- now when you start a script with a call to size() that sets the unit
to something other than `px`, the x/y/w/h values passed to grobs will
be interpreted in that unit (e.g., `inch` or `cm`)
- likewise, measure() and properties like .bounds, .size, and .metrics
return values in the specified units
- point-ish values (like stroke width, font sizes, etc.) aren’t
affected by the canvas unit anymore; they’re always in terms of
pixels/postscript points
made canvas units part of the context state

- calling size() with an alternate unit within an export() block will
now restore the original unit on exit