Add task mutex handling to 1.9-rc1: allow specific tasks to be mutual exclusive in a parallel build 

Hi there,

I would like to provide you with my very first Gradle submission. It introduces the concept of mutex to the Task BO and the handling of it in AbstractTaskPlanExecutor and related classes. The idea is that in parallel runs, only one task at a time with equal mutex string can be executing. Other Tasks with equal mutex string will stay in the build queue when a new task is to be picked.

By default the mutex of a Task is null, which means no mutex set and the handling in that case is unchanged.

I needed this in my own build, to guard our test tasks.They have never been designed to run in parallel and that leaded to issues like claiming the same network port twice.

See also forum topic: http://forums.gradle.org/gradle/topics/mutex_for_parallel_execution

The changes are defined against 1.9-rc1, as I could not get a stable dev build with master branch.

I have submitted my CLA last week and got acknowledgement on that by Hans Dockter.

Thanks,
-- Mark