This uses the sleepq lock itself to synchronize busy sleep/wakeup and avoids the need for the page lock. I need the lock test and conditional acquire/release for a later patch. It could be elided for now but it allows for simplifying some consumers already.
I didn't realize some diffs from a different patchset snuck in and I will correct that. I made a note where this occurred.