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
Prevent recursive Coercible dictionaries