If pattern synonym is bidirectional and its type is some unboxed type T#,
generate a worker function of type Void# -> T#, and redirect the wrapper
(via a compulsory unfolding) to the worker. Fixes #9732.
Apply compulsory unfoldings during desugaring, except for `seq` which is special.
See Note [Unfolding while desugaring] for the rationale.
nlHsTyApps: for applying a function both on type- and term-level arguments
When calling the success continuation of a matcher, pass existential tyvars
as type arguments, not value arguments