ir3/ra: prevent moving source intervals for shared collects
Non-trivial collects (i.e., ones that will introduce moves because the sources don't line-up with the destination) may cause source intervals to get implicitly moved when they are inserted as children of the destination interval. Since we don't support moving intervals in shared RA, this may cause illegal register allocations. Prevent this by creating a new top-level interval for the destination so that the source intervals will be left alone.