compress `alloc` before destructuring expression into context and redex

Recent compressing of alloc steps breaks several tests (e.g. `(fact 5)` and `(add1 (quotient 5 0))`) because allocation turns some redexes into non-redexes, making `vσ` stuck. This pull request attempts to fix that by performing the context/redex splitting after allocations.