Extract scheduler cross-process locking into DistributedMutex.
Use DistributedMutex to make sure poll votes are tallied correctly.
Merge pull request #2257 from vikhyat/distributed-mutex

Extract cross-process locking from the scheduler into DistributedMutex