Replace Run() loop with channel

Instead sth. like

for isRunning {
    //Wait and log
}

use channels w/ sth like this:

func StartUp(...){
    c := make(chan bool)
    go getCLIGoing(&core, c chan)
    [...]
    <- c //receiving channel blocks
}

func Shutdown(..., c chan) {
    //Clean up and stuff
    c <- true //or whichever type channel transports
}

/cc @m.stiemerling

Edited by Ghost User