Fix elimination of conditional expressions in registerizeHarder

Previously, attempts to eliminate a side-effect-free conditional expression like such as this:

```
x = (some_test ? 1 : 0) | 0;
// value of x not subsequently used, so the assignment can be eliminated
```

would corrupt internal block state, because the sub-nodes of the conditional expression are owned by a different block to the assignment node itself.

This PR fixes the problem but not splitting side-effect free conditionals across multiple blocks.  Effect-ful conditionals are still split into separate blocks so that assignments within each branch are properly tracked through the flow analysis, but this is safe since we never try to eliminate such exprs anyway.