stream: Guarantee ordering of 'finish' event

In synchronous Writable streams (where the _write cb is called on the
current tick), the 'finish' event (and thus the end() callback) can in
some cases be called before all the write() callbacks are called.

Use a counter, and have stream.Transform rely on the 'prefinish' event
instead of the 'finish' event.

This has zero effect on most streams, but it corrects an edge case and
makes it perform more deterministically, which is a Good Thing.
stream: Handle multi-corking properly

This adds proper support for the following situation:

    w.cork();
    w.write(...);
    w.cork();
    w.write(...);
    w.uncork();
    w.write(...);
    w.uncork();

This is relevant when you have a function (as we do in HTTP) that wants
to use cork, but in some cases, want to have a cork/uncork *around*
that function, without losing the benefits of writev.
http: Use writev instead of the hacky hot end
uv: Upgrade to 0.11.2
test: Darwin file watcher has paths now

Even when watching subdirs.
npm: Upgrade to 1.2.20
deps: upgrade v8 to 3.19.0
v8: reapply floating patches
stream_wrap: MayContainNonAscii() is deprecated

V8 3.19.0 deprecates v8::String::MayContainNonAscii(). It always returns
true so there is not much point in keeping the call site around.
test: fix up weakref.cc after v8 api change
test: fix up weakref.cc deprecation warnings