Disable timers on aos::Application on drop

The issue occurs when an application doesn't live for the duration
of the event loop. Originally, we were seeing segmentation faults
due to timer handlers being called after the application had been
dropped. We now do the proper cleanup to avoid this.

Change-Id: I42b474e72a536f9332b757a853edae471f29fc6c
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/starter/subprocess.h b/aos/starter/subprocess.h
index ce70644..6de5cb8 100644
--- a/aos/starter/subprocess.h
+++ b/aos/starter/subprocess.h
@@ -81,6 +81,8 @@
               aos::EventLoop *event_loop, std::function<void()> on_change,
               QuietLogging quiet_flag = QuietLogging::kNo);
 
+  ~Application();
+
   flatbuffers::Offset<aos::starter::ApplicationStatus> PopulateStatus(
       flatbuffers::FlatBufferBuilder *builder, util::Top *top);
   aos::starter::State status() const { return status_; };
@@ -119,6 +121,7 @@
   bool autostart() const { return autostart_; }
 
   bool autorestart() const { return autorestart_; }
+  void set_autorestart(bool autorestart) { autorestart_ = autorestart; }
 
   const std::string &GetStdout();
   const std::string &GetStderr();