Add task plugin for high-level tasks
Factor out task runner into separate module