simplify exit and cleanup

We had two channels `exit` and `waitForExit`, but both were being used for the same purpose. Also, cleanup is already being done in `Shutdown` goroutine so removed it from interrupt handlers. This was causing panics due to double close of `a.quit` chan.