Don't use a generic apply thunk for known calls
Currently, an AP thunk like sat = f a b c will not have its own entry
point and info pointer and will instead reuse a generic apply thunk
That's great from a code size perspective, but if f is a known
function, a specialised entry point with a plain call can be much faster
than figuring out the arity and doing dynamic dispatch.
This looks at fs arity to figure out if it is a known function and if so, it
will not lower it to a generic apply function.
Benchmark results are encouraging: No changes to allocation, but 0.2% less
Test Plan: Validates locally
Reviewers: simonmar, osa1, simonpj, bgamari
Reviewed By: simonpj
Subscribers: rwbarton, carter
GHC Trac Issues: Trac #16005
Differential Revision: https://phabricator.haskell.org/D5414