Move asm to arch.S, context_switch optimization

All asm is now in arch.S.  The AMD64 version of __context_switch() now
saves/restores only callee-save registers.  The IA32 version would
benefit from the same optimization, but I'm fairly sure it's broken to
begin with so it can wait.
mutexes

Simple mutex implementation.  Also some improvements to test.c (allowing
multiple tests to be run) and some refactoring.
barriers

Simple barrier implementation.
Fix ufiber_yeild_to()

Remove the fiber from the ready list before switching to it.