extra: Make the mutex a little more fair

The comments are in the commit itself, but the general idea is to have green
threads relinquish control to native blockers and to have native blockers
relinquish control to green threads. This should help keep things a little more
fair instead of just always favoring green threads.
Change Relaxed operations to SeqCst on an os mutex

This is becoming our general policy until we have a better understanding of
these orderings.
Work around recursive locking on windows mutexes

It turns out that windows cricital sections will succeed in EnterCriticalSection
or TryEnterCriticalSection if the calling thread already owns the mutex, but
this is obviously bad for us because there could be two contenting green threads
on the same os thread.

With some extra checks of `self.held` in try_lock(), I believe that we can
circumvent this limitation with minimal impact to the mutex.