Only block on syscalls when necessary.

We now leverage the O_NONBLOCK flag to the open call so that we will only
invoke our backing pthread to do the syscall for us if it would have blocked
us. Otherwise we just do the syscall and continue.  In either case, we do
a yield back to the scheduler so it can make a new scheduling decision.