Handle !noundef metadata in comhineMetadata. The behavior of violating
!noundef metadata is undefined behavior. So if K dominates J, we can
preserve it uncontionally, otherwise, we preserve it if both K and J
have !noundef metadata been set.
This patch also makes !noundef metadata added in KnownIDs when doing
instruction combine for phi node or global value numbering for loads.