Redo inlining patch, plus some tidying up
This adds back in the patch
* UNDO: Be a little keener to inline
It originally broke the compiler because it tickled a Cmm optimisation bug,
now fixed.
In revisiting this I have also make inlining a bit cleverer, in response to
more examples from Roman. In particular
* CoreUnfold.CallCtxt is a data type that tells something about
the context of a call. The new feature is that if the context is
the argument position of a function call, we record both
- whether the function (or some higher up function) has rules
- what the argument discount in that position is
Either of these make functions keener to inline, even if it's
in a lazy position
* There was conseqential tidying up on the data type of CallCont.
In particular I got rid of the now-unused LetRhsFlag