Refine the type of Phi node statements when they are replaced
When we replace a Phi node in `acde_pass!()` due to being able to prove that
one path is always taken, we should request that downstream optimization
passes refine the type of this Phi node in the event that the type of
the replacing value does not match the type of the Phi node itself.
Ideally, we would have a stricter check here, that the type of the
replacing value is _more narrow_ than the type of the Phi node, however
this is happening inside of `compact!()` which does not have access to
whatever custom lattice these IR statements were inferred with, and thus
can result in issues when the types provided in the IR do not exist
within the default fallback lattice.
Add a test asserting that the `IR_FLAG_REFINED` flag is added
appropriately.