added some NSRect operations
geometry cleanup

- Point, Size, and Region are all mutable objects now (rather than
ornamented tuples) but support the same unpacking syntax as before
- added .intersect() and .inset() methods to Region
store Point and Size dimensions as floats
BoundsMixin now uses a Region internally

- allows a number of accessors to drop their validation
cleaned up Transform.apply