Add intersection type handling for Java 8 and up.

AVERT YER EYES

Closes #91.
I have long loved Joiner's idiom for putting tokens in between objects: https://github.com/google/guava/blob/master/guava/src/com/google/common/base/Joiner.java#L105