dart2js: eliminate useless conditionals
dart2js: eliminate useless conditionals

1. Simplify HPhi nodes that merge refinements of the same value.

2. Replace the condition of HIf with a constant when the HIf does nothing (no controlled statements or phis).

Together with existing optimizations, this can optimize `s?.toString()` to `s` when `s` is known to be a nullable String.

BUG=
R=efortuna@google.com

Review-Url: https://codereview.chromium.org/2823543002 .

dartino/dart-sdk,dart-archive/dart-sdk,dart-lang/sdk,dart-archive/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dart-lang/sdk,dartino/dart-sdk,dart-archive/dart-sdk,dart-lang/sdk,dart-lang/sdk,dart-archive/dart-sdk,dartino/dart-sdk,dart-lang/sdk,dartino/dart-sdk,dartino/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dart-lang/sdk,dart-archive/dart-sdk,dart-archive/dart-sdk,dart-lang/sdk