Desugar multiple polymorphic bindings more intelligently
Occasionally people write very large recursive groups of definitions.
In general we desugar these to a single definition that binds tuple,
plus lots of tuple selectors. But that code has quadratic size, which
can be bad.
This patch adds a new case to the desugaring of bindings, for the
situation where there are lots of polymorphic variables, but no
dictionaries. (Dictionaries force us into the general case.)
See Note [Abstracting over tyvars only].
The extra behaviour can be disabled with the (static) flag
-fno-ds-multi-tyvar
in case we want to experiment with switching it on or off. There is
essentially-zero effect on the nofib suite though.
I was provoked into doing this by Trac #1136. In fact I'm not sure
it's the real cause of the problem there, but it's a good idea anyway.