Fixes #6707 There was a race condition between different parts of the service code: `Stop` waits for the event which is published before the service is removed from the `running[id]` map, so if one does `Stop` followed by `Start` (this is what `services restart` API does), by the time it goes to `Start` it might be still in the `running[id]` map, so `Start` does nothing. Overall this code should be rewritten and simplified, but for now move out sending these "terminal" events out so that by the time the event is published, the service is stopped and removed from the `running[id]` map. Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>