The occurrence analyer is now really rather subtle when dealing
with recursive groups; see Note [Loop breaking and RULES] especially.
This patch refactors this code a bit, notably
* Introduces a new data type Details instead of a tuple
* More clearly breaks up a recursive group into its SCCs
before processing it in a separate function occAnalRec
* As a result, does better dead-code elimination, becuause it's
done per SCC rather than for the whole Rec