Add intersection type handling for Java 8 and up.

AVERT YER EYES

Closes #91.
As we (try to) extract intersection _bounds_ from a `TypeVariable`'s `getUpperBound()` (in `TypeVariableName.forTypeMirror()`), shouldn't we rather model `TypeVariableName` has having only one bound that can be an `IntersectionTypeName` rather than having different behaviors depending on the JVM?