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.
Actually, there are two infinities. One is used only for comparison, the other one is indeed a sentinel. I will distinguish them, using either `INFINITY` or `float('inf')`. Thanks for pointing this out.