migrations: Store migration parents as a slice
Created by: efritz
Pulled from #29831. This PR expands the migration Definition
struct to carry a slice of parent migration identifiers instead of a single integer representing a parent (or no parent if zero). Note that because we haven't updated any of the code that reads migration definitions from disk, so we still maintain migrations as a single chain of definitions (therefore this PR should be behavior-preserving from any existing codepath).