AppRunner: Shutdown on SIGTERM and SIGINT signals

Implement /quitquitquit handler

Change-Id: I0d11791bf3b2831b71548e2ca573e34ad854c561
diff --git a/apps/app-runner/main.go b/apps/app-runner/main.go
index 0449ca5..b11a977 100644
--- a/apps/app-runner/main.go
+++ b/apps/app-runner/main.go
@@ -7,8 +7,10 @@
 	"log"
 	"net"
 	"os"
+	"os/signal"
 	"path/filepath"
 	"strings"
+	"syscall"
 
 	"golang.org/x/crypto/ssh"
 
@@ -129,7 +131,16 @@
 		panic(err)
 	}
 	s := NewServer(*agentMode, *port, *appId, *service, id, *repoAddr, *branch, *rootDir, signer, *appDir, cmds, self, *managerAddr)
-	if err := s.Start(); err != nil {
-		log.Fatal(err)
-	}
+	go func() {
+		if err := s.Start(); err != nil {
+			log.Fatal(err)
+		} else {
+			log.Println("Done")
+			os.Exit(0)
+		}
+	}()
+	sigChan := make(chan os.Signal, 1)
+	signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
+	<-sigChan
+	s.Stop()
 }