doc: tls: added path property to tls.connect

In tls.connect a unix socket connection to a path may be made in
recent versions of node by specifying the value for the path
property.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
deps: provide TXT chunk info in c-ares

Provide more information in `ares_txt_reply` to coalesce chunks from the
same record into one string.

fix #7367
http: add request.flush() method

Forcibly flushes the request headers.  You need this with long-lived
HTTP connections where the first data isn't written until the connection
has been established (think: tunneling requests over HTTP CONNECT.)

Fixes #7296.

Signed-off-by: Fedor Indutny <fedor@indutny.com>
vm: assign Environment to created context

ContextifyContext::CreateV8Context is now create context
with Environment pointer

Signed-off-by: Fedor Indutny <fedor@indutny.com>
buffer: add compare and equals methods

compare() works like String.localeCompare such that:

    Buffer.compare(a, b) === a.compare(b);

equals() does a native check to see if two buffers are equal.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
async-wrap: fix coverage and providers

* Generalize the ASYNC_PROVIDER being passed by then category to which
  it belongs. Instead of having specialized providers for classes like
  ConnectWrap.
* When some classes are instantiated from a libuv callback there is no
  activeContext, so manually set the parent class that contains the
  context that should be used for class instantiation. This will allow
  proper propagation.
* Force before/after callbacks to run when a class is instantiated, not
  only when a callback is about to be called from MakeCallback.
* Add _removeAsyncQueue() method to handles so when there are no longer
  any items in the queue async_flags_ can be reset.
* Manually track additional states in Environment. For example: the
  length of the activeContext queue, the provider type of the
  activeContext or whether any AsyncListener callbacks are being
  processed.
asynclistener: update to match AsyncWrap changes

* Pass if the error was handled as the fourth argument to the error
  callback handler.
* Move all properties to single _async object.
* Only run callbacks for watched providers.
* Each asynchronous call chain is independent and the listener can be
  removed at any time for that specific branch in the call stack.
* Each AsyncListener tracks its own watched providers. These are
  accumulated on _async.watchedProviders for quick checks when the
  run/load/unload functions are called.
* When an AsyncListener is removed, it's removed from the activeContext
  and from every context in the contextStack.
asynclistener: only run after if before could

If an AsyncListener was added in the middle of an async execution chain
then it was possible for the after callback to run w/o the before
callback having had a chance to run.

This make sure the before callback has a chance to run, or the after
callback will be skipped.
test/doc: add remaining changes for asynclistener
async-wrap: initialize async_wrap_parent_

This is to prevent an edge case that causees EXC_BAD_ACCESS.