Various fixes re. type variables

Fixes #75, #82 and #87 
Nice. I feel like this pattern happens a lot and is mostly noise. Maybe we get fancy with a context-aware joiner in the future?
```java
if (!typeVariables.isEmpty()) {
  appendable.write('<');

  ContextJoiner.on(", ").appendTo(appendable, context, typeVariables);
  // ... or ...
  context.joinerOn(", ").appendTo(appendable, typeVariables);

  appendable.write("> ");
}
```