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.
> 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?

You're right, that bit was unnecessary and I've since removed it.

> 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?

In my testing, so far just `Tuple$num` has showed up, but I've modified the Regex to now match on `scala.Tuple$num`  as well as just plain `Tuple$num`. I would love to know if there is a better way as well once you hear more. :+1: 

> 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.

Agreed; that threw me in for a loop when I was working on this as well. Now `unapplyReturnTypes` is of type `Option[List[Type]]`