Make SubGoalDepth a type of its own

In preparation of counting type function applications and constraint
resolving separately.
Separate SubGoalDepthCounters (constraints and typ fun applications)
Add -ftype-function-stack to set type function stack depth
Large refactor: Move CtLoc field from Ct to CtEvidence
Add ctLoc = ctev_loc . cc_ev
Prevent recursive Coercible dictionaries
Extend Coercible to newtype instances

This fixes: #8548
Implement GeneralizedNewtypeDeriving in terms of `coerce`.
Use newTyConInstRhs in coerce’d GND
Use bindLocalNamesFV in rn_inst_info