node: always set function name

For easier debugging it's helpful to always have the function name.
These were not set for methods coming from cc.
smalloc: create separate module

It will be confusing if later on we add Buffer#dispose(), and smalloc is
its own cpp api anyways. So instead create a new require('smalloc') to
expose the previous Buffer.alloc/dispose methods, and expose copyOnto
and kMaxLength as well.

Other changes:
* Added documentation and additional tests.
* smalloc::CopyOnto has changed from using assert() to throwing errors
  on bad argument values because it is not exposed to the user.
* Minor style fixes.
tools: make check-imports.sh work on bsd-likes
src: add IsFunction() assert to MakeCallback

Helps catch bugs early on. Without it, V8 throws the fairly
unhelpful exception "TypeError: undefined is not a function" -
unhelpful because there is no stack trace.
src: fix persistent handle lifecycle issue

Commit 636ca7c adds an optimization that casts strong Persistent<T>
handles directly to Local<T> handles to avoid the overhead of creating
new HandleScope-rooted Local<T> handles all the time.

One gotcha that I missed is that it's no longer legal to reference the
Local<T> after calling Persistent<T>::Dispose(). This commit addresses
that.
buffer: return offset for end of last write
src: ReqWrap now optionally accepts a wrap object
udp_wrap, tcp_wrap: add out arg to AddressToJS

Prep work for removing process._errno. The handle.getsockname() function
will return a status code in the future and set the address and port
properties on the object that's passed in from JS land.
deps: upgrade libuv to 3ee4d3f
src: add libuv bindings module

Exports:

* all UV_E* error codes
* a uv_err_name() binding
src, lib: deduplicate errnoException
src, lib: update after internal api change

Libuv now returns errors directly.  Make everything in src/ and lib/
follow suit.

The changes to lib/ are not strictly necessary but they remove the need
for the abominations that are process._errno and node::SetErrno().
test: fix up tests after internal api change
bench: fix up benchmarks after internal api change
src: fix windows build error from 221c689e

Just forward declare struct sockaddr, the struct is never actually
dereferenced in src/node_internals.h.

Before this commit, it included sys/socket.h but that header doesn't
exist on Windows.
v8: upgrade to v8 3.20.7
src: update v8 build requirements

In v8 3.20.4 build/common.gypi was moved to build/toolchain.gypi and
build/features.gypi.
v8: reapply floating patches
util: removed duplicated isArray check
stream: Simplify flowing, passive data listening

Closes #5860

In streams2, there is an "old mode" for compatibility.  Once switched
into this mode, there is no going back.

With this change, there is a "flowing mode" and a "paused mode".  If you
add a data listener, then this will start the flow of data.  However,
hitting the `pause()` method will switch *back* into a non-flowing mode,
where the `read()` method will pull data out.

Every time `read()` returns a data chunk, it also emits a `data` event.
In this way, a passive data listener can be added, and the stream passed
off to some other reader, for use with progress bars and the like.

There is no API change beyond this added flexibility.