This change does a few things:
* Improves compile times because the gen.cpp is inlined so less header parsing is required.
* Allows us to forward declare more types in the headers where we were not able to because the gen.cpp files did not have all the required headers included. The gen.cpp files required the header that generated it to include all the types because of the constructor and desructor in the gen.cpp need to know the full type.
#jira
#preflight 6323b43f8131e92d65aed1d9
[CL 22064061 by bryan sefcik in ue5-main branch]
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485
[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
#ROBOMERGE-SOURCE: CL 16642197 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v833-16641396)
[CL 16642206 by jonathan adamczewski in ue5-release-engine-test branch]
RootDirectory, EngineDirectory, UnrealBuildToolPath are now found in BuildUtilities' UnrealBuild namesapce.
The way these are computed has changed. Previously, it was assumed that the application is UnrealBuildTool, and paths were constructed relative to that assembly.
Now, the assumption is that the process is located under a "Engine/Build/DotNET" sub-path and paths are constructed relative to that.
#jira none
#ROBOMERGE-SOURCE: CL 16607440 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v828-16531559)
[CL 16607455 by jonathan adamczewski in ue5-release-engine-test branch]
#rb none
#jira UE-71116
#ROBOMERGE-SOURCE: CL 5337196 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)
[CL 5337949 by ben marsh in Main branch]