Fix Json macro when passed case classes with a single custom generic field

Prior to this, a compile-time error would be thrown when trying to create a Json formatter for a case class with a single field that is of a custom type-parameterised type.

This change fixes that and simplifies some of the logic when trying to get unapplyTypes.
I'm checking with the Scala guys as to whether there exists a better API for finding out whether a type is a tuple or not, but short of that, I'm not sure about the regex - what if the type constructor is `scala.Tuple2` instead of just `Tuple2` - is that possible?

Also, why are you checking if the type constructor takes type arguments, isn't this implied by the fact that the first match on Nil arguments didn't match?

Finally, I think it would be better if we made the type of `unapplyReturnTypes` not Any, this if statement should have an `else None`, and the first case statement (the error case) should return None too.