Implement restart command using new tasks

Bring back the restart command with finer control, including a
configurable delay between each container restart, and a delay between
the stop and the start of each container.

Note that if no concurrency limit is specified during a restart,
zero-downtime cannot be guaranteed as, for example, all instances of a
given service will restart at the same time.

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>