Track liveness more accurately in DCE
Track liveness more accurately in DCE

The previous implementation would fail to optimize many case
expressions, because the liveness information from one branch would get
propagated into the other branch. Also, names of top-level decls used in
module binders are allowed to appear in those sub-blocks, which has
invalidated some more optimization opportunities.

google-research/dex-lang,google-research/dex-lang,google-research/dex-lang,google-research/dex-lang,google-research/dex-lang,google-research/dex-lang