Separate out the locks that check for safepoint and those that do not, giving the locks that do not check for safepoint a lower ranking.
If a thread has a no-safepoint checking lock held, it cannot go to a safepoint. There's a NoSafepointVerifier installed when we take out these locks. Because of this all non-safepoint checking locks are ranked below safepoint checking locks.
This change divides the 'leaf' ranked mutex into nosafepoint and below and leaf and below, adding the 'nosafepoint' rank. I'm not crazy about this name.