[InstCombine] Replace one-use select operand based on condition

InstCombine already performs a fold where X == Y ? f(X) : Z is

transformed to X == Y ? f(Y) : Z if f(Y) simplifies. However,

if f(X) only has one use, then we can always directly replace the

use inside the instruction. To actually be profitable, limit it to

the case where Y is a non-expr constant.

This could be further extended to replace uses further up a one-use

instruction chain, but for now this only looks one level up.

Among other things, this also subsumes D94860.

Differential Revision: https://reviews.llvm.org/D94862