Everything has a NodeRenderer now

I think this covers all the interesting cases, but there are a couple of remaining questions. See the comments.
A trick that Scalaz uses is to define a companion object for obtaining the implicit:

```scala
object NodeRenderer {
  def apply[A](implicit n: NodeRenderer[A]) = n
}
```

Then it becomes possible to acquire an implicit through the syntax:

```scala
NodeRenderer[Foo].render(foo)
```

which is sometimes very convenient.