First draft of typesetting engine

I implemented the Knuth-Plass algorithm. If necessary, I can simplify the code (the current version may work for circle or triangle-shaped text, [see this example](http://www.bramstein.com/projects/typeset/) but we don't need such advanced use).

The PostScript part still needs to be done.
If this is supposed to be a suitable position for a breakpoint, why are we naming it a `Node` (algorithm/implementation specific) rather than calling it a `Breakpoint` or something problem-specific? Are these nodes _definitely_ breakpoints, or are they _possible_ breakpoints? 

(Note: this question -- and the ones that follow -- are intended to highlight points for discussion / explanation in the chapter, rather than being explicit demands of "I think you should change this". I'll try to be very clear when I feel strongly that something should be changed.)