STM: Only wake up once

Previously, threads blocked on an STM retry would be sent a wakeup
message each time an unpark was requested. This could result in the
accumulation of a large number of wake-up messages, which would slow
wake-up once the sleeping thread is finally scheduled.

Here, we introduce a new closure type, STM_WAITING, which marks a TSO
which has been sent a wake-up message, allowing us to send only one
wakeup.