Simplify JIT shutdown logic in crossgen2 (#56687)
There was unanswered comment about thread safety in https://github.com/dotnet/runtime/pull/56187/files#r675461236 so I just decided to fix it myself.
While on it, I simplified shutdown to use `AppDomain.ProcessExit`.
I'm not sure `AppDomain.UnhandledException` is needed but the original code had this in a `finally`.
The better fix would be to allow JIT to be initialized right before we start a compilation and shut down after, but that would require no process wide state in the JIT. As it stands now, JIT is once-per-process-global.