Move peelFV from DmdAnal to Demand
Put bothDmdResult back into bothDmdType
Use the un-postprocessed DmdResult to build nested CPR
Only use bothDmdEnv, not bothDmdType, in dmdAnalVarApp for constructors
Revert "Only use bothDmdEnv, not bothDmdType, in dmdAnalVarApp for constructors"

This reverts commit 2b1ebabdfbc07d0bdba60e04bbd6cdcf210f7953.
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.
Add Note [non-algebraic or open body type warning]
Remove dmdAnalArg and replace by easier to understand code
Change the handling of Bottom demands on free variables

and add a few Notes to explain it.
Merge branch 'wip/nested-cpr' of git://git.haskell.org/ghc into wip/nested-cpr

Conflicts:
	compiler/stranal/DmdAnal.lhs