Function that returns pointer to current task
Add UART interface

Transmit and receive are driven from UART related interrupts. A task
transmitting or receiving a character is suspended until the character
was written to or read from the UART data register.
Use cli() macro instead of inline asm statement

See: http://www.nongnu.org/avr-libc/user-manual/optimization.html#optim_code_reorder
Yield to woken up tasks from idle task