MigrationDiscovery
Finds every migration the configuration points at, and puts them in the order they would run.
Nothing here touches the database and nothing here runs a line of anybody's code - a class is loaded and read, never constructed, and loading is not initialising. Everything that can be refused is refused at this point, which is the only point where refusing costs nothing: past it, a migration that fails has already had migrations committed in front of it.