A renderer is used to convert the Area Tree into the output document.
The renderer is given the tree one page at a time. All pages are supplied
in the order they appear in the document. In order to save memory it is
possble to render the pages out of order. Any page that is not reeady to
be rendered is setup by the renderer first so that it can reserve a space
or reference for when the page is ready to be rendered.
The AbstractRenderer does most of the work to iterate through the area
tree parts. This means that the most renderers simply need to implement
the specific parts with inserting text, images and lines. The methods can
easily be overridden to handle things in a different way or do some extra
processing.