Major refactor to how printer methods work.
* Replaced define-unparser-method with define-print-method. A print method is
an ordinary procedure that accepts an object and an output port as its
arguments and prints whatever it wants to. The translation layer required by
older unparser methods is no longer needed.
* New standard-print-method is roughly equivalent to simple-unparser-method.
* New bracketed-print-method is roughly equivalent to standard-unparser-method.
* Changed the printer to handle standard-print-method specially when detecting
cycles and shared structure, so that an object using that print method has its
parts walked when looking for shared/cyclic structure.