manager: Fix racy service starting
manager: Fix racy service starting

The manager was starting goroutines to run the scheduler, orchestrator,
etc, and those goroutines would use variables like m.scheduler and
m.orchestrator without holding a lock. This could potentially
dereference a nil pointer, or even call Run on the same item twice if
the node stopped being the leader for a very short period.

Signed-off-by: Aaron Lehmann <8ecfc6017a87905413dcd7d63696a2a4c351b604@docker.com>

runshenzhu/swarmkit,docker/swarmkit,jlhawn/swarmkit,alyyousuf7/swarmkit,sungwonh/swarmkit,Noyan759/swarmkit,Noyan759/swarmkit,jlhawn/swarmkit,fate-grand-order/swarmkit,cheyang/swarmkit,cezarsa/swarmkit,RenaudWasTaken/swarmkit,aaronlehmann/swarmkit,diogomonica/swarmkit,cheyang/swarmkit,yp-engineering/swarmkit,yongtang/swarmkit,allencloud/swarmkit,dperny/swarmkit-1,aaronlehmann/swarmkit,AliyunContainerService/swarmkit,elifa/swarmkit,elifa/swarmkit,AliyunContainerService/swarmkit,deljuven/swarmkit,deljuven/swarmkit,diogomonica/swarmkit,dperny/swarmkit-1,sungwonh/swarmkit,yongtang/swarmkit,vasil-yordanov/swarmkit,runshenzhu/swarmkit,fate-grand-order/swarmkit,alyyousuf7/swarmkit,vasil-yordanov/swarmkit,cezarsa/swarmkit,yp-engineering/swarmkit,docker/swarmkit,RenaudWasTaken/swarmkit,allencloud/swarmkit