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.
darwin: implement uv_set_process_title, part 2

Make changes to the process title visible to tools like `ps`.

The argv clobber technique is reasonably portable across Unices;
the common code has been moved into src/unix/proctitle.c and is used
on Linux and OS X. Other platforms will probably follow in the future.
unix: abstract away async pipe infrastructure

This commit lays the groundwork for the switch to eventfds on Linux.
linux: use eventfds for async handles

Use eventfds to drive async handles, fall back to regular pipes on older
kernels (pre-2.6.22).

Gives a nice boost on the async handle benchmarks. Before:

  12,516,113 async events in 5.0 seconds (2,503,222/s, 1,048,576 unique
  async1: 11.95 sec (83,701/sec)
  async2: 11.65 sec (85,862/sec)
  async4: 5.20 sec (192,154/sec)
  async8: 9.97 sec (100,315/sec)
  async_pummel_1: 1,000,000 callbacks in 2.56 seconds (389,919/sec)
  async_pummel_2: 1,000,000 callbacks in 2.65 seconds (377,205/sec)
  async_pummel_4: 1,000,000 callbacks in 2.18 seconds (457,704/sec)
  async_pummel_8: 1,000,000 callbacks in 4.19 seconds (238,632/sec)

After:

  16,168,081 async events in 5.0 seconds (3,233,616/s, 1,048,576 unique
  async1: 11.08 sec (90,213/sec)
  async2: 10.17 sec (98,297/sec)
  async4: 4.81 sec (207,789/sec)
  async8: 8.98 sec (111,419/sec)
  async_pummel_1: 1,000,000 callbacks in 1.16 seconds (863,296/sec)
  async_pummel_2: 1,000,000 callbacks in 1.45 seconds (691,459/sec)
  async_pummel_4: 1,000,000 callbacks in 0.66 seconds (1,514,770/sec)
  async_pummel_8: 1,000,000 callbacks in 1.42 seconds (704,549/sec)

That's a speedup from anywhere between 10% to 330%.
unix: set errno in sendfile emulation

The sendfile emulation in src/unix/fs.c polls the file descriptor for
write readiness. If POLLERR or POLLHUP is set, it bails out but doesn't
set errno (hence it doesn't report a useful error code). Rectify that.

Fixes #620.
build: turn on strict aliasing in release builds
win: Align uv_run code with unix
Added uv_stop, ability to stop a running event loop