Added new atomic section code.

We now use a mutex to ensure the atomicity of all TinyOS atomic sections.
Of note is how we handle recursive locking. In traditional TinyOS
enable/disable interrupt code it would return a 1 or 0 indicating whether
interrupts were enabled or disabled. This was okay because of the nature
of the way interrupts execute ensured that they would always run to
completion.

Instead we choose to use a recurisve lock. There's some race conditions
that can crop up with the way linux does preemption that we needed to
solve.