unix,windows: fix timer order in case of same timeout

Compare start_id of timer handles when they have the same timeout.
start_id is allocated with loop->timer_counter in uv_timer_start.
unix, windows: make uv_fs_t.statbuf public

Make the statbuf field public. This means you no longer have to use
req->ptr - though that still works and will continue to work for the
foreseeable future.

Fixes #704.
linux: fix O_CLOEXEC/O_NONBLOCK defines
Adhere to the naming conventions in uv_timer_* functions.

In the src/*/timer.c code the first argument is called handle, not timer.
We should be consistent in the interface definition file.
Return the errorcode provided by uv_set_artificial_error.

This reduces the line count.
unix, windows: make uv_now() return uint64_t

Using int64_t doesn't make sense here because the return value is never
negative.
unix, windows: change timer intervals to uint64_t
unix, windows: make uv_timer_get_repeat() const correct
doc: document _LARGEFILE_SOURCE + _FILE_OFFSET_BITS
build: fix shared-after-static build

Executing `make libuv.so` after `make libuv.a` failed because the
libuv.a target compiled the files in src/ without -fPIC.

Make the libuv.so target depend on files with a different suffix to
keep them separated.
linux: fix abort() on epoll_ctl() race condition

Don't check the return value of epoll_ctl(EPOLL_CTL_DEL). When the
file descriptor is closed, we're potentially racing with another
thread and that means the errno is not a reliable indicator of
the actual error.

The other event mechanisms (kqueue, event ports) are not affected
because:

* kqueue returns either EBADF or ENOENT. Both are handled by libuv.
* event ports rearms all file descriptors on each call to port_getn().

Fixes joyent/node#4558.
unix: fail early on bad send_handle in uv_write2

Return UV_EBADF if send_handle doesn't have a valid fd.
unix: reduce line count, return uv__set_sys_error
unix: use uv__set_artificial_error in uv_write2

* Use uv__set_artificial_error(), slightly more efficient than
  uv__set_sys_error().

* Return UV_EINVAL instead of UV_EOPNOTSUPP.

* Fix up style.
unix: handle EINPROGRESS for unix sockets

Before this commit, it was assumed that connect() on UNIX sockets never
returns EINPROGRESS. It turned out to be a bad assumption: Dave Pacheco
reports sporadic hangups on SmartOS because of that.

It's not clear to me _why_ the Illumos kernel returns that error but
that's inconsequential: whatever the cause, libuv needs to handle it
and now it does.

Fixes joyent/node#4785.
unix: auto-unref spawn handle on process exit

Consistent, for better or worse, with uv-win.

Fixes #718.
unix: short-circuit on no-op io watcher changes

Don't add the io watcher to the watcher queue if the requested change
is effectively a no-op, that is, when the event mask doesn't change.

The exception here is sunos because the event ports backend requires
that watched file descriptors are re-added on every turn of the event
loop.

This commit is a micro-optimization, it does not change the event
loop's observable behavior in any way.
test: add tap output

Given UV_TAP_OUTPUT being set, test result output should use TAP formatting
build: support 64 bits darwin builds

Before this commit, gyp built 32 bits versions of libuv exclusively.

Enable with:

  $ ./gyp_uv -Dtarget_arch=x64
darwin: implement uv_set_process_title, part 1

Apply undocumented Carbon magic to change the process title in a way
that's visible in the Activity Monitor.