Starting jenkins builds with Gearman workers

Gearman worker can now start jenkins jobs with passed in parameters.  The
uuid is also passed in as a parameter due to a non-existing gearman-java
feature: https://answers.launchpad.net/gearman-java/+question/218865.

Change-Id: If04488ec2bfc19ca1b7b3fc94ca3e04154fa55c3
fix gearman function registration bug

The gearman function registration was registering functions on nodes
multiple times.  Added a check to make sure nodes on the label
matched the node in the executor before registering the function.
Also added better documentation and helper functions.

Change-Id: Id13bbfe0c003a82e1e311736c5ff7a682e5efca1
Add comments, decouple build actions, and cancel jobs.

ExecutorWorkerThread - added comments
ManagementWorkerThread - added comments
NodeAssignmentAction - de-couple build actions. Action to send jenkins build to a specific jenkins node
NodeParametersAction - de-couple build actions. Action to send parameters to a jenkins build
StartJobWorker - De-couple build actions.  Now schedule a build with NodeAssignmentAction and NodeParametersAction
StopJobWorker - Cancel or abort builds.  This only cancels build right now, abort does not work yet

Change-Id: I72247f9a292fc78f5ea48b7c50d1f5df386efd00
Change to spawn a thread for each jenkins executor instead of just thread per jenkins nodes.

Also added functionality to wait until a StartJobWorker can service a build request.  This change eliminates
putting builds on the jenkins queue.  Now jobs are either running or it's not.  The only cancel that
makes sense is an abort (currently running jobs).
AbstractWorkerThread.java - add comments, set worker id to name instead of random uuid
ExectorWorkerThread.java - create thread of each jenkins executor
GearmanPlugin.java - refactor to spawn a thread for every executor
NodeAssignmentAction.java - provide access to label name StartJobWorker.java - make thread block execution until there is an available
jenkins executor to run the job. Also set the gearman job return parameters.
StopJobWorker.java - Set gearman job return parameters.

Change-Id: I30cec8ca3900eb7976c38077383505ea73e744dd
Fix to enable execution of builds on master computer

This checkin enables gearman to execute builds on the master node.  The
Master node is a special case because it does not inherit from the Slave Node object in
Jenkins, instead it's a Computer object so whenever you do Jenkins.getNodes() the master
is not in the list of Nodes. Also the master name is "", however when you want to
run a build against the master you need to pass in a "master" label to scheduleBuild
method.

Change-Id: I65c21e7cf7f2e244c94638f8858ab0fa5fc8acb9