Fix libthread_xu's use of MAP_STACK. Guards were not being setup properly.
MAP_STACK mappings do not immediately extend down to their base, so calling
mprotect() on the base is basically a NOP. Instead of calling mprotect() we
call mmap() with MAP_FIXED to force the guard.
Properly use MAP_FIXED when setting up the primary guard on the original
user stack. The address specified in the mmap() is only a hint when MAP_FIXED
is not used, and will not properly map the anonymous area. Also, new kernels
do not allow non-MAP_STACK mappings to override MAP_STACK mappings and the
user stack area is a MAP_STACK mapping, so use of MAP_FIXED is mandatory here.