This patch attempts to add support nodes with multiple results. This is necessary to enable AVX512 masked scatter/gather support.
This change exposed some odd behavior with a few instructions in the R600 backend. Previously it was using IMPLICIT_DEF input to represent what was really a second output and this magically worked. But now that we used NumDefs directly this needs to be converted to a proper output. But to do that we need to be able to cast a second output type. So I've introduced a ValueTypeList that can contain multiple ValueTypes.