aos: Optionally give subprocesses more than 1 second to quit

Right now our application manager is hard-coded to send SIGKILL to its
child if it hasn't shut down within 1 second. This is suboptimal
because some applications simply take longer than 1 second to shut
down.

The goal here is to eventually add a "stop duration" field in the AOS
config.

Change-Id: I885f39d4503519bb75598a1b7e595b56e3f21348
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/starter/subprocess.cc b/aos/starter/subprocess.cc
index 9606adc..d677922 100644
--- a/aos/starter/subprocess.cc
+++ b/aos/starter/subprocess.cc
@@ -266,6 +266,8 @@
   if (application->has_memory_limit() && application->memory_limit() > 0) {
     SetMemoryLimit(application->memory_limit());
   }
+
+  set_stop_grace_period(std::chrono::nanoseconds(application->stop_time()));
 }
 
 void Application::DoStart() {
@@ -496,8 +498,7 @@
 
       // Watchdog timer to SIGKILL application if it is still running 1 second
       // after SIGINT
-      stop_timer_->Schedule(event_loop_->monotonic_now() +
-                            std::chrono::seconds(1));
+      stop_timer_->Schedule(event_loop_->monotonic_now() + stop_grace_period_);
       queue_restart_ = restart;
       OnChange();
       break;