Refactor orchestration plays using container tasks

Extract out the logic that acts on individual containers into tasks that
are scheduled and used by orchestration plays to operate on containers.
This help seperate the logic between things that touch containers, and
things that orchestrate containers; it also prepares for the rolling
restart orchestration play, which needs to both stop and start
individual containers so we want to re-use that logic.

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