Make CallArity make more use of many-calls

by elaborating the domain a bit.
Call Arity refactoring: Use a product domain
Call Arity refactoring: Factor out callArityBound
Call Arity refactoring: instance Outputable Count
Call Arity: Now also done on Top-Level binds
Move unit call arity unittests into subdirectory
Call arity: Handle type application correctly
Support mutual recursion
Call arity testcase for #3924

nice numbers coming from these micro-benchmarks.
Call Arity: Update compiler perf number changes

Lots of improvements, one regression in max bytes allocated.