Move ufibers.{c,h} -> ufiber.{c,h}
ufiber_yield_to(): return error codes

ESRCH  - target fiber already terminated
EAGAIN - target fiber not ready
ufiber_join(): return error code

EDEADLK - fiber tried to join itself

TODO: detect more complicated join deadlocks.
ufiber_create: set eflags properly, plug leak

eflags was not being initialized.  ufiber_create() is now split into two
parts: the C part, which is relatively architecture-independent, and the
asm part which is not.  The __ufiber_create() function (asm) takes a
pointer to the return address and sets up the stack for the initial
context switch.

Also, a rather large memory leak is fixed, in which stacks were being
reallocated instead of reused.