AU: Catch terminate signals and block exit if necessary.

Adds a global Terminator class to manage signals and exit blocking.

BUG=7392
TEST=unit tests, gmerged on device, initctl stop update-engine

Change-Id: I2291d4eb55240a6662b18ff834af161d957bce2f

Review URL: http://codereview.chromium.org/3608015
diff --git a/generate_delta_main.cc b/generate_delta_main.cc
index c66d9d1..8c5d6a9 100644
--- a/generate_delta_main.cc
+++ b/generate_delta_main.cc
@@ -21,6 +21,7 @@
 #include "update_engine/delta_performer.h"
 #include "update_engine/prefs.h"
 #include "update_engine/subprocess.h"
+#include "update_engine/terminator.h"
 #include "update_engine/update_metadata.pb.h"
 #include "update_engine/utils.h"
 
@@ -61,6 +62,7 @@
   g_thread_init(NULL);
   google::ParseCommandLineFlags(&argc, &argv, true);
   CommandLine::Init(argc, argv);
+  Terminator::Init();
   Subprocess::Init();
   logging::InitLogging("delta_generator.log",
                        logging::LOG_ONLY_TO_SYSTEM_DEBUG_LOG,