Consolidate use of uth_*_notifs and fix race

There was a race in the enable/disable of notifs when being called on multiple
vcores for the same uthread.  Originally, I thought it would be impossible for
two vcores to be calling enable/disable notifs on the same uthread on
different vcores, but this turns out not to be true. Uthreads blocked on
synchronization primitives grab pdr locks (which call enable/disable notifs
internally) and release them from vcore context after placing them on a queue.
If another vcore comes along and pulls that uthread off the queue and starts
running it, its possible that both vcores could end up inside enable/disable
notifs for the same uthread at the same time.

This was not a benign race, but actually cropped up every now and then when
running kweb.  The fix was to use atomic inc/dec to change the value of
disable_depth, as well as atomically capture the value after decrememting to
decide if it was time to reenable notifs or not.