Fine-grain locking for build scheduling

* Only one scheduler per Job at a given time
* Stops using global scheduling lock table
* Lock bails immediately if taken by somebody else (and checks next job)
* Adds JobSchedulingLock named lock type

[#81247410]
Fine-grain locking for resource checking

* Only one scanner per resource at a given time
* Stops using global lock table
* Lock bails immediately if taken by somebody else
* Adds ResourceCheckingLock named lock type

[#81247410]