Simplify `GHC.Core.Utils.mkTick`
Tickets: #26878 (closed) #26941 (closed) #27121 (closed)
This MR simplifies GHC.Core.Utils.mkTick, removing the accumulating parameter rest which was suspiciously treating a bunch of
different ticks as a group, and moving the group as a whole around the AST, ignoring that the ticks in the group might have different placement
properties.
The most important change is that we revert the logic (added in 85b0aae2) that allowed ticks to be placed around coercions, which caused serious issues (e.g. #27121 (closed)). It was just a mistake, as it doesn't make sense to put a tick around a coercion.
Also adds Note [Pushing SCCs inwards] which clarifies the logic for pushing SCCs into lambdas, constructor applications, and dropping SCCs around non-function variables (in particular the treatment of splittable ticks).
A few other changes are also implemented:
- simplify
can_splitpredicate (no functional change) - combine profiling ticks into one when possible