Added Object::print_to(Printer)->Printer.  Objects that must compose the result of a to->String should override to->String to return 'print_to(StringBuilder())->String' and then override print_to(printer:Printer)->Printer to printer.print(value).print(other_value) etc.  At that point print_to() can be used for to->String, direct console printing ('print_to(Console)', and StringBuilder composition ('obj.print_to(buffer)').