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.
I think the way that btcd and wallet handle this for clean shutdown makes a bit more sense (and is easier to read too).

Basically, you will need a way to wait on all started processes exiting.  If you're using the shutdown channel, fire up a goroutine, block on them exiting, and when they all do (Kill them when the simulation is over), send to the shutdown chan.  In the SIGINT handler, you can also add the Kill call.  Then when either the simulation is over, or when the simulation is exited early with ^C, Kill will be called, main will block until everything has shutdown, and then the program will exit.