Support Java 8 type annotations

The attached code depending on the format of TypeMirror.toString() isn't ideal.  I started down the path of using ((DeclaredType) returnType).getAnnotationMirrors(), which wasn't bad, but then I also needed to deal with ((DeclaredType) returnType).getTypeArguments() and then I started thinking about generic nested types inside of generic types and my head began to spin.