Move LLDB initialization/shutdown to Application.
This creates a new top-level folder called Application which is intended to hold code specific to using LLDB as an application. Currently this holds the Initialize() and Terminate() functions,
as well as the fatal error handler.
This provides a means to break the massive dependency cycle which is caused by the fact that Debugger calls Initialize and Terminate which bring in the entire LLDB project. So linking against Core forces a link against all of LLDB, instead of against just Core.
With the structure here, applications invoke lldb_private::Initialize() directly, and that invokes Debugger::Initialize. This way Application depends on Debugger, but Debugger doesn't depend on Application.
I think this organization makes better sense anyway. Having a bunch of functionality in source/lldb.cpp with an ambiguous name doesn't really make it clear how the functionality is related or what it is. By creating an Application folder, it makes more sense that we can put other stuff in there which is of interest specifically to program startup and initialization. There's probably some duplicated logic already between lldb-server, lldb, and other applications that link against LLDB which could be put here someday.
You should document what this returns since it seems non-obvious.