If a thread running as a part of the user-level scheduler happens to
block on a foreign call, and also happens to be bound, then we no longer
resume the scheduler of such threads since the IOManager seems to not
like it. See suspendThread, resumeThread, and
shouldResumeBlockedOnForeignCall in rts/Schedule.c.

This is an unsatisfactory solution since a bound thread performing a
blocking foreign call blocks the scheduler! FIX ME!
Disabled resuming scheduler blocked on foreign call
Fixed an error with sleepCapability. tso->is_sleeping variable is set to 0 if the thread does not actually block on the STM.
Disabled labelling upcall threads. The hashtable used for storing the meta-data appears not to be thread-safe. Setting tso->is_sleeping to false just before a thread runs in the Scheudler (under run_thread label in the main scheduler loop). This avoids errors associated with sleeping threads (see stg_sleepCapability for more info).
Disabled migration of threads running a user-level scheduler, without
which sieve program seems to deadlock while running on a high core
count. Enabling debug messages seems to make the bug disapper (Grr..).
The error most probably is in RtsMessaging subsystem. Needs a
different/better testcase.