Internal scheduling notes.

Internal scheduling requires a stack or queue to make sense.
We also need a stack of "monitor contexts" to be able to restuore stuff.

Multi scheduling try 1 
 - adding threads to many monitors and synching the monitors
 - Too hard

Multi scheduling try 2
 - using a leader when in a group
 - it's hard but doable to manage who is the leader and keep the current context
 - basically __monitor_guard_t always saves an restore the leader and current context
 