Fix Trac #3965: tighten conditions when deriving Data
It's tricky to set up the context for a Data instance. I got it wrong once, and fixed it -- hence the "extra_constraints" in TcDeriv.inferConstraints. But it still wasn't right! The tricky bit is that dataCast1 is only generated when T :: *->*, and dataCast2 when T :: *->*->*. (See the code in TcGenDeriv for dataCastX.