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.
The clean way is to use Scala types and symbols. In `reflect.api.StandardDefinitions` you can get access to all tuple types in `TupleClass.seq`. Your test could then be (roughly):

```Scala
  TupleClass.seq.exists(tupleSym => t.baseType(tupleSym) ne NoType)
```