Implemented shouldRunAfter ordering
Added docs for shouldRunAfter ordering
Make taking execution plan snapshots cheaper  when determining task execution order.