Fix bug with duping fds for plan 9 files

I added a new claim_fd() function similar to the get_fd() and put_fd()
functions in vfs.c.  When duping plan9 fds for a new_proc via dupfgrp()
we call claim_fd() to update the new_proc's open_file list shared with
the vfs.

I also swapped the order of put_fd() and setting the fd in
src/ns/sysfile.c to avoid a potential race condition with the assert in
newfd().
Update pthread futexes to use alarms for timeouts

One side effect of this is that the pthread library now depends on
benchutil.  We may want to revisit this dependency.