Improve ValueTracking on left shift with nsw flag
If a left shift has nsw flag, it produces a poison value if it shifts out any bits that disagree with the resultant sign bit. So we can assume the result has the same sign bit as the first operand.
This patch is separated from D18777.
Please remove "We can return arbitrary values."