* Remove ErrorReporter.Error, replace with AutomationException with Error Code.
* Move ErrorCodes to AutomationException.
* Don't return exit codes. Solely rely on exceptions to propagate exit codes.
* Remove MainProc delegate
* Remove setting of Environment.ExitCode as it is ignored when main returns an int.
* ShutdownLogging is nothrow, as all exceptions would be ignored anyway.
* Wrap all shutdown steps so further ones get a chance to run.
* Move HostPlatform.Initialize into the global try/catch block
#codereview:ben.marsh
[CL 2605826 by Wes Hunt in Main branch]
- Note: target framework for UAT (mono project) is upped to 4.5 to match UBT.
#codereview Josh.Adams, Michael.Trepka, Kellan.Carr, Gil.Gribb
[CL 2285233 by Dmitry Rekman in Main branch]
Disabled UAT code optimizations (shouldn't affect performance but should improve debugging in Development config)
[CL 2281484 by Robert Manuszewski in Main branch]
#change AutomationTool, AutomationToolLauncher and DotNETUtilities will always compile in Development in the sln to avoid situations where one of UAT dependencies is built with diffrerent config which results in UAT failing to compile scripts in Debug due to outdated dependencies of UAT.
[CL 2281268 by Robert Manuszewski in Main branch]