new abstraction for the text system nsmachinery

- replaced the Typesetter class with TextFrame. rather than masking the
entire apparatus, the frame corresponds to an NSTextContainer whose
text-storage & layout-mgr are created lazily
- in cases where the frame is too small to present the entire string,
an additional frame can be spawned (with the same dimensions)
containing the next run of text by using the next() builtin
- next() will continue returning new text frames until the entire
string has been laid out (at which point it will raise StopIteration)
added multi-column layout to Text

- now using the new TextFrame layout scheme
- provides the underpinnings for multi-column text. still deciding what
the best syntax for that would look like…
added validation for Point objects
Text objects can now layout multiple frames

- typical Text objects have only a single frame, but if you supply a
width & height (and the string is too long to fit in that rectangle)
the `flow` method allows you to create & position additional text
frames to lay out the entire run of text
- added `frames` property to iterate over existing frames without
creating any new ones
added some NSRect convenience methods

- helpful for calculating the bounds of multi-frame text flows
xcode loves to re-version xibs...
everything in its place

- moved box-calculations to the Drawing section
multi-frame text & beziers now in sync

- the bezier returned by Text.path now has its _fulcrum set so it
responds to transforms the same way as the parent Text object
- added a .bounds property which returns the bounding box for the drawn
text (useful since the .y attr corresponds to the baseline, not the
container)
- for multi-frame text, the .bounds rect is the union of all the layout
rectangles defined during a previous call to .flow()
- beware: single-line text with a non-LEFT alignment currently gets
blown into hyperspace
single-vs-multiframe text geometry now coherent

- screen position calculations no longer need to special-case Text
objects without a fixed width or height
- text() can now handle newline characters in strings (even when you’re
not supplying a width)