Get rid of {Run,Terminate}MainApplication(), and more ApplicationDelegate conversion.

Why RunMainApplication() was a bad idea:
 1. The intention is to allow the use of //base, which often requires
    some initialization (e.g., having an AtExitManager).
 2. But your ApplicationImplBase implementation would be created before
    that initialization (so using //base in its constructor would be
    dodgy).
 3. And it would be destroyed after, e.g., the AtExitManager was torn
    down (so using //base in its destructor -- or in the destructor of
    any member variable of your ApplicationImplBase implementation -- is
    potentially problematic).
So, instead just have a ScopedChromiumInit class, to make that stuff
explicit, and make the "scopes" not overlap.

Note that ApplicationRunnerChromium had a similar problem: Your
ApplicationDelegate implementation would be created before that
initialization (like 2.). However, the ApplicationImpl would destroy
your ApplicationDelegate implementation before tearing down the
AtExitManager, so it didn't have problem 3. (exactly). Nonetheless, it
was kind of horrible (since you couldn't really use //base in your
MojoMain()).

R=vardhan@google.com

Review URL: https://codereview.chromium.org/2011383002 .
diff --git a/examples/indirect_service/indirect_integer_service.cc b/examples/indirect_service/indirect_integer_service.cc
index f8dc3c9..dbc354b 100644
--- a/examples/indirect_service/indirect_integer_service.cc
+++ b/examples/indirect_service/indirect_integer_service.cc
@@ -64,6 +64,6 @@
 
 MojoResult MojoMain(MojoHandle application_request) {
   mojo::examples::IndirectIntegerServiceApp indirect_integer_service_app;
-  return mojo::RunMainApplication(application_request,
-                                  &indirect_integer_service_app);
+  return mojo::RunApplication(application_request,
+                              &indirect_integer_service_app);
 }