Everything has a NodeRenderer now

I think this covers all the interesting cases, but there are a couple of remaining questions. See the comments.
Is `toString` really what we want here???