Implemented shouldRunAfter ordering
Added docs for shouldRunAfter ordering
Make taking execution plan snapshots cheaper  when determining task execution order.
Merge branch 'erdi/should-run-after'.

Conflicts:
	subprojects/integ-test/src/integTest/groovy/org/gradle/integtests/TaskExecutionIntegrationTest.groovy