Add toString, equals and hashCode
Also allow PrintStreams
Add a tree-to-stream printer.

PPBuilder: constructs a pretty printer by adding rules and compiling
them
PrettyPrinter: a tree-walk based printer with PGF stream output