Fixed uart from randomly stopping

The driver for the pl011 uart was never signaling the output semaphore(uartprt->osema) which cause the threads to eventually lock up and stopping outputing/recieving any data.  Adding in the signaln calls seems to have fixed this
Merge pull request #10 from 36Chambers/uart-fix

Fixed uart from randomly stopping
Workaround for possible bug in ctxsw()

Something is wrong w/ prnull's initial stack layout or SP value.
If the first call to resched() occurs from prnull, prnull's SP becomes
corrupt and the next time it is selected for execution the PC will be
somewhere random in memory.

Experimentally, I found that forcing the first call to resched() to
occur from an IRQ handler (timer in the case of the raspberry-pi)
avoids this issue.
Merged ctxsw workaround