Handle recursive pre/post tasks

As a side effect, we also get __call__ ability on a task. :)