handle ctrl+c and cleanup before exit

Since we need to cleanup actors and miner both with or without panic, I thought it'd be best to just use `defer` without `recover`. I tested this and found that panic or not, defer cleans up as expected. If I'm missing some case where `recover` is required, let me know.

Ctrl+C was being propagated to any spawned processes so strictly speaking the handler here is superfluous. Just thought it would be a good practice to not rely on the caller (`os/exec`?) and clean it up anyway.
Or:

```
func (x *Whatever) Start() {
        x.wg.Add(3)
        go x.ThingA()
        go x.ThingB()
        go x.ThingC()
}
```

Now Start itself doesn't need to run as a goroutine.  Instead, it is responsible for starting each goroutine necessary.