Add the concept of pre-exploration of dependencies - searching assetregistry or target domain dependencies of the set of requested packages up front, to find all packages that will be cooked and allow us to do asynchronous and batch operations on them.
Convert FRequestCluster into an FPackageData container, holding packages in a substate of EPackageState::Request. This allows us to create a new RequestClusters when we encounter a package that was not found in the initial discovery.
Add hybriditerative mode for iterative cooks; this uses targetdomain keys to check for packages that exist from the previous cook, rather tracing the dependency graph to find all packages that transitively reference packages with modified guids.
Modify AssetRegistryGenerator to use a TMap of iteratively loaded packages that can be edied as packages cook, rather than using a const previous state; this supports hybrid iterative where we do not calculate the list of iterative packages until we encounter them in a request cluster.
#rb Zousar.Shaker
#rnx
[CL 17373295 by Matt Peters in ue5-main branch]
Move profiling code into CookProfiling.h/.cpp.
Remove FScopeAssign struct that duplicates TGuardValue.
#rb Devin.Doucette
#rnx
[CL 17117732 by Matt Peters in ue5-main branch]