Fix TypeVariableName wrt bounds and creation from TypeMirror

A TypeVariableName's lower bound can only be created by captures, so
JavaWriter shouldn't model it. On the other hand, the upper bounds
can be multiple, and are represented as an intersection type in
javax.lang.model.
Add support for generic type arguments where it's missing

ClassWriter had a typeVariables field with no accessor.
ConstructorWriter and MethodWriter were missing support entirely.
And finally, InterfaceWriter didn't list type variables' referenced
classes in its own referenced classes.