Move peelFV from DmdAnal to Demand
Clarify the default demand on demand environments

by adding Notes and using easier to understand combinators.
Remove dmdAnalArg and replace by easier to understand code
Add Note [non-algebraic or open body type warning]
Split DmdResult into DmdResult and CPRResult

this is a small-step-refactoring patch and not very interesting on its
own.
Do not export DmdResult constructors in Demand.lhs
Rename postProcessDmdType to postProcessUnsat and use* to reuse*
Refactor peelManyCalls

its first argument is just used for its length (the arity of the call).
So changing the type to Int to reflect that.

Also add a note [Demands from unsaturated function calls] that hopefully
comprehensively and comprehensibly explains what is going on here.
Disentangle postProcessDmdTypeM and postProcessUnsat

Make different postProcess code paths for function arguments (which are
post-processed just to be both'ed) and unsaturated functions (which are
post-processed for other reasons.)
Make types of bothDmdType more precise

by only passing the demand on the free variables, and whether the
argument (resp. scrunitee) may or will diverge.
Update comments: Void# instead of State# RealWorld#
Copy-pasto.
Mention '-fno-ignore-asserts' in documentation.

(Closes: #8617)
Remove unused eqExprX
LlvmManger: Fix rewriteInstructions

breakSubstring argument order was wrong
LlvmMangler: Rewrite @function symbols to @object
LlvmMangler: Make sure no symbols slip through re-.typing

Previously a few symbols weren't flipped from %function to %object
as the section splitter was emitting them without processes. This
may be a bug in itself but for now let's just work around the issue
but rewriting all symbol `.types`.
Fix usage of -z for gold

gold doesn't seem to recognize `-z origin`, only `-zorigin`. Odd.