Implemented software requested schedule() as schedule_noirq()
Fixed mutex locking. Mutexes now schedule away if locked and on unlock.