Requires joyent/node#2148 to set host_os
libuv uses feature checks to determine if newer syscalls like pipe2() are available. This works fine until someone compiles libuv against kernel headers that are newer than the actual kernel our software runs on. Fall back to traditional (but race-y!) syscalls when the kernel reports ENOSYS or EINVAL.