Strictify the demand on unlifted arguments

because they are trivially strict, and the primitive operations do not
have the strictness demand in their demand signature.
Add Converges to DmdResult

to detect definite convergence (required for nested CPR).

Notable details:
 * botDmdType is no longer the unit for lubDmdType. So do not use foldr
   lubDmdType botDmdType when combinding the branches of a case, to
   avoid throwing away information.
 * avoid declaring recursive things as terminating for sure, by removing
   the Converges flag from a loop breaker.
 * cprProdSig comes with a Converging flag, so it is removed using
   sigMayDiverge where necessary
 * a data constructor worker is not converging, if it is strict in any
   of its fields.
In deferType, return convRes = Converges NoCPR

because this is the right-identity to `bothDmdResult`, and this is the
right thing to do in a lazy context.
Mark the scrunitee of a multi-way-case as converging
Literals are Converging
Some primitive operations are converging
Note [Termination information and arguments]
Variables of unlifted types are always converging
Initial work on Nested CPR
Limit the depth of the CPR information

as otherwise, it could become infinite.
Add a flag -fnested-cpr-off to conveniently test the effect of nested CPR
Refactor trimCPRInfo away
Pass nested CPR information from scrunitee to body

in case of a complex case scrunitee.
CPR test case: Case binder CPR
Actually create a nested CPR worker-wrapper
Inline the datacon wrapper more aggressively

so that the CPR analysis find the real constructor and can return a
nested CPR result.

An alternative would be to look through the unfolding and analize that
(but that would only be a good idea if the wrapper is going to be
inlined afterwards), or special-case wrappers in the demand analyzer.
Both not very nice.

According to nofib: The impact of this is (on code size and allocations)
is ... nil.
Add a testcase with an infinite CPR property
Mark FacState as not broken
Do not attach CPR information to data constructor ids

because the worker is handled specially by the demand analyser, and the
wrapper is expected to be inlined before that.

There are corner cases (such as undersaturated calls) where this loses
information, but nofib does not know any of these.

On the other side it simplifies and removes code, and it makes it easier
to get holdof the DynFlags whenever we create CPR information.
Remove dmdTransformDataConSig

it does nothing that dmdAnalVarApp would not have done before