vm: share security token between contexts

By default, each `v8::Context` has a different Security Token, which
prevents access to one context from another.

fix #7140
http: use defaultAgent.protocol in protocol check

Default to the `defaultAgent.protocol` when comparing the
user-specified `options.protocol` string. This is so that
`http.Agent` instances do not need to specify their own
`protocol` field, since we have the relevant information
already from the `defaultAgent`.

Note that the test case could be separately cherry-picked
to the `v0.10` branch, since it already passes correctly.

Fixes #7349.
Fixes the regression described in: http://git.io/2ds-WQ
doc: remove `agent.request()` call in example

The `Agent#request()` function was removed in
f3189ace6b5e31a874df421ac2f74da0e77cb14d, so don't
use it in the documentation example. The function
wasn't documented in the first place.
async-wrap: include additional ProviderType

NONE has been moved to 0.

CONNECTWRAP has been removed and instead the incoming connection
provider type is passed.

FSREQWRAP has been included.

{Req,Write}Wrap have been split up and now pass the callers provider
type, since the class defines what is going on not who is calling it. So
now the "provider" constructor parameter is now required on both.

CARES has been moved to QUERYWRAP.

AsyncWrap::provider_type() now returns ProviderType.
tracing: WIP pass provider filter to AsyncListener
tracing: properly check asyncQueue length

The asyncQueue length was not properly checked when running the create
callbacks. Leading to no callbacks being run.
doc: update AsyncListener usage

There were a few errors in the functionality that users could expect
from AsyncListener.
tracing: pass context to AsyncListener error() cb

The context passed to the error() callback is that of the originating
function call in the call stack. Not the context of the function that
actually threw.
tracing: pass call callbacks on correct provider

This will make it so callbacks are only called on the correct provider,
but still reserve the async stack.

Also the provider type (e.g. TCP) will be passed as the second argument
to the create() callback.

process.nextTick() is a special case. Because of its implicit call style
within core code the callbacks will always be called for all nextTick().
doc: additions explaining new AL functionality
WIP
WIP: allow proper removal of AL
WIP, before removing it all
Revamp

- Add an _asyncMap object which keeps track of all AL uid's that have
  been placed on the context. This will propagate to all children, even
  if the AL was removed. This way it won't be run again from the
  activeListeningQueue.

- If you run removeAsyncListener from and activeContext it will remove
  the AL from that context. Likewise if you run addAsyncListener from
  inside an activeContext it will be added to that context.
WIP: refactor to use global contexts instead
WIP: working through my life
WIP: almost there
WIP: almost there

needed to remove the context from the entire stack.
WIP: going along, doing my thing
src: add AsyncWrap method for removing listeners