Missing cleanup for a couple thread/socket-spawning tests.
wakeup should do a full thread interrupt.

wakeup can also be used to roust a thread from IO and other
blocking operations, so it needs to do a full interrupt. This also
aligns with MRI 2.1 thread event behavior.
Ensure blocking tasks have been assigned before going to sleep.

Setting sleep before the blocking task is present can lead to a
separate wakeup thread attempting to unblock the thread before an
unblocker has been set. Ultimately this means we see a thread stay
asleep and the wakeup request is lost.

Accompanying test hung quickly without this change and does not
appear to hang with it.
Remove two exception-message tests that fail in MRI too.